Git: Показать индекс diff в сообщении коммита как комментарий - PullRequest
104 голосов
/ 20 января 2011

Когда git commit открыть редактор сообщений, отображается краткий статус, примерно такой:

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Your branch is ahead of 'origin/master' by 26 commits.
#
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   Showcase/src/com/gigantt/BorderArea.mxml
#   modified:   Showcase/src/com/gigantt/Client.mxml
#   modified:   Showcase/src/com/gigantt/GraphItem.mxml
#

Как я могу настроить git, чтобы показать также дифференциал для фиксации? Я знаю, что это может быть длинный дифференциал, но все же .. такой полезный.

Ответы [ 5 ]

142 голосов
/ 20 января 2011

Флаг --verbose (или -v) для git commit будет отображать разницу в том, что будет зафиксировано:

git commit --verbose

31 голосов
/ 28 октября 2011

Недостаточно репутации, чтобы опубликовать ответ на ответ Алана, но для Идана и всех остальных я только что попробовал его, и строки diff в сообщении commit явно не закомментированы.Тем не менее, они все еще не отображаются в последнем сообщении о фиксации, слава богу.

$ git commit --verbose

В моем редакторе:

Feeling a bit pessimistic now.

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   README
#
diff --git a/README b/README
index af5626b..c62237e 100644
--- a/README
+++ b/README
@@ -1 +1 @@
-Hello, world!
+Goodbye, world!

(обратите внимание на отсутствиеиз # предшествующих разностным строкам)

А затем фактическое сообщение о коммите:

$ git log -n 1
commit ad21a2655ef6d8173c2df08dc9893055b26bc068
Author: Tom Jakubowski <tom@crystae.net>
Date:   Thu Oct 27 19:12:54 2011 -0700

    Feeling a bit pessimistic now.

Очевидно, git show все равно будет показывать разность, но это потому, что это всегда происходит для коммитов,:)

9 голосов
/ 06 марта 2011

Я поместил следующие строки в .git / hooks / prepare-commit-msg , чтобы получить закомментированный diff:

#!/bin/bash

if [ "$2" == "" ] ; then
    git diff --staged -p --stat 2> /dev/null | awk '{ printf "#"; print}' >> "$1"  2>/dev/null
fi

Таким образом, вы можете не только комментироватьиз diff, но также добавьте больше информации (как делает опция stat ).

Редактировать: Также git commit --verbose не включает diff всообщение коммита так обойдется без # s.

8 голосов
/ 28 октября 2015

Если вы хотите всегда видеть разность при фиксации, вы можете добавить в файл ~/.gitconfig следующее:

[alias]
commit = commit -v
7 голосов
/ 11 сентября 2017

Самый простой способ убедиться, что это поведение всегда присутствует, - добавить этот раздел в файл git config:

[commit]
  verbose = true

Возможно, вам придется настроить редактор наотображение в режиме сравнения (для подсветки синтаксиса).Я использую Notepad2 вместо Windows Notepad, и -s diff устанавливает цветовую схему соответствующим образом (красный для удаленных линий и т. Д.):

[core]
  editor = C:/Windows/system32/notepad.exe -s diff
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...