当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以显示要提交的差异? 我知道这可能是一个很长的差异,但仍然......非常有用。
答案 0 :(得分:140)
git commit
的--verbose
(或-v
)标记将显示将要提交的内容的差异:
git commit --verbose
答案 1 :(得分:31)
没有足够的声誉来回复Alan的答案,但对于Idan和其他任何人我只是尝试了它并且提交消息中的diff行没有明确注释掉。但是,他们仍然没有出现在最后的提交消息中,谢天谢地。
$ 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
仍将显示差异,但这是因为它总是用于提交。 :)
答案 2 :(得分:9)
我在 .git / hooks / prepare-commit-msg 中添加以下行以获得注释掉的差异:
#!/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 不包含提交消息的差异,这样做没有#s。
答案 3 :(得分:8)
如果您希望在提交时始终看到差异,可以将以下内容添加到~/.gitconfig
文件中:
[alias]
commit = commit -v
答案 4 :(得分:7)
确保总是存在此行为的最简单方法是将此部分添加到git config
文件中:
[commit]
verbose = true
您可能需要将编辑器配置为以diff模式实际显示(用于语法突出显示)。我使用Notepad2作为Windows记事本的替代品,-s diff
适当地设置颜色方案(红色表示已删除的行等):
[core]
editor = C:/Windows/system32/notepad.exe -s diff