Ответ 1
Флаг --verbose
(или -v
) для git commit
отобразит разницу в том, что было бы выполнено:
git commit --verbose
Когда 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, чтобы показать также, какой diff должен быть зафиксирован? Я знаю, что это может быть длинный diff, но все же... настолько полезный.
Флаг --verbose
(или -v
) для git commit
отобразит разницу в том, что было бы выполнено:
git commit --verbose
Недостаточно репутации, чтобы ответить на ответ Алана, но для Идана и кого-либо еще я просто попробовал это, а строки 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!
(обратите внимание на отсутствие #
перед линиями разностей)
И затем фактическое сообщение commit:
$ git log -n 1
commit ad21a2655ef6d8173c2df08dc9893055b26bc068
Author: Tom Jakubowski <[email protected]>
Date: Thu Oct 27 19:12:54 2011 -0700
Feeling a bit pessimistic now.
Очевидно, что git show
все равно покажет diff, но это потому, что он всегда делает для коммитов.:)
Я добавил следующие строки в .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 в сообщение commit таким образом, обойдется без #s.
Если вы хотите всегда видеть diff при фиксации, вы можете добавить в свой файл ~/.gitconfig
следующее:
[alias]
commit = commit -v
Самый простой способ убедиться, что это поведение всегда присутствует, - это добавить этот раздел в ваш файл git config
:
[commit]
verbose = true
Вам может потребоваться настроить ваш редактор для фактического отображения в режиме diff (для подсветки синтаксиса). Я использую Notepad2 в качестве замены Windows Notepad, а -s diff
правильно устанавливает цветовую схему (красный для удаленных строк и т.д.):
[core]
editor = C:/Windows/system32/notepad.exe -s diff