git:在提交消息中显示索引差异作为注释

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 commit--verbose (或-v )标志将显示将git commit内容的差异:

git commit --verbose

没有足够的声望发布回复艾伦的答案,但对于伊丹和其他人我只是试了一下,并提交消息中的差异线没有明确的注释掉。 但是,他们还是没有出现在最后的提交信息中,谢天谢地。

$ 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! 

(注意在diff行之前缺less#

然后实际提交消息:

 $ 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仍然会显示diff,但是这是因为它总是提交。 🙂

我在.git / hooks / prepare-commit-msg中join了以下几行来获得注释掉的差异:

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

这样你不但可以注释差异,还可以添加更多信息(如stat选项)。

编辑:另外, git commit –verbose不包括这种方式提交消息的差异会没有#s。

如果你想在提交时总是看到diff,你可以在你的~/.gitconfig文件中添加以下内容:

 [alias] commit = commit -v 

确保这种行为始终存在的最简单方法是将此部分添加到您的git config文件中:

 [commit] verbose = true 

您可能需要将您的编辑器configuration为以diff模式显示(用于语法高亮显示)。 我使用记事本2作为Windows记事本replace,并且-s diff设置适当的颜色scheme(红色表示删除的行等):

 [core] editor = C:/Windows/system32/notepad.exe -s diff