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