提交 52f425e1(2013年8月30日)提到:
鼓励新用户使用“
log
”代替。现在,这些命令已经统一了,只是有不同的默认值。当
git log
在2005年6月初添加时,它只允许您查看日志消息而没有差异。直到2006年4月初,该命令才学会使用差异选项。
因此,高级用户倾向于使用自2005年5月中旬就已存在且支持差异选项的 'whatchanged
'。
这是git whatchanged
新手指南的更新内容:
鼓励新用户使用
git log
。whatchanged
命令与git log
基本相同,但默认显示原始格式的差异输出并跳过合并。该命令主要出于历史原因而保留。 很多人在学习Git之前通过阅读Linux内核邮件列表来了解它,所以他们的手指已经习惯了输入它。
如torek在评论中提到的,git whatchanged
的等效命令是:
git log --raw --no-merges
(这将避免这个问题的出现)
git log --raw --no-merges
命令来获得相同的效果,而不必使用名义上已弃用的命令。 - torek在最简单的形式下,'git log' 显示每个提交(sha、作者、日期、消息),而 'git whatchanged' 显示提交以及更改的文件。例如:
$ git log
commit db9f525674443314a9822a6bd6c3acce49c8f8d6
Author: ...
Date: Wed Apr 4 22:55:33 2012 -0700
Add more
commit eed0b7aa3cad5d985b5f1d52f3c0605339c119a1
Author: ...
Date: Tue Apr 3 20:36:04 2012 -0700
del bing/one.c
不过对于whatchanged:
$ git whatchanged
commit db9f525674443314a9822a6bd6c3acce49c8f8d6
Author: ...
Date: Wed Apr 4 22:55:33 2012 -0700
Add more
:100644 100644 f2e4113... d415016... M bar.c
commit eed0b7aa3cad5d985b5f1d52f3c0605339c119a1
Author: ...
Date: Tue Apr 3 20:36:04 2012 -0700
del bing/one.c
:100644 000000 e69de29... 0000000... D bing/one.c
有很多选项可用于更改每个命令的输出。例如,'git whatchanged -p'以差异/补丁形式显示更改。
git-whatchanged
不包括合并记录,而 git-log
则包括。我还没有找到选项(如果有的话)可以让 git-log
以与 git-whatchanged
相同的方式输出更改文件列表。 - Ken Thomasesgit-log --stat
命令来显示更改的文件列表(我认为这比 git-whatchanged
更好,因为它显示了更改行数并支持颜色)。 - Nick Felt:100644 100644 f2e4113... d415016...
部分代表什么? - ThaDon:oldmode newmode oldobjecthash newobjecthash
。 - Colin D Bennett我并不完全同意。你能否看到如何使用log
合并更改的文件呢?
我没有找到这个功能,但它对于了解文件何时在某个分支中合并非常有用,例如:
file c.c
在 branch1
中具有从 2012 年 1 月 1 日开始的提交日期,如果您将其合并到 branch2
中,并且稍后想要跟踪该提交是何时引入到 branch2
中的,那么 git log
可以帮助吗?如果您拥有合并,则可以使用 git whatchanged -m sha1
在其中搜索。