git-log和git-whatchanged之间的区别?

Ale*_*ird 28 git git-log

  1. 给出另一个问题的答案,并且
  2. 鉴于git-loggit-whatchanged的手册页说他们从git-rev-list中提取...

......这两个命令之间的区别是什么?为什么要麻烦他们两个?

Von*_*onC 26

提交52f425e1(八月30日2013)提到:

鼓励新用户使用' log'.目前,这些命令是统一的,只有不同的默认值.

' git log'只允许你查看日志消息,并且在2005年6月初添加它时没有差异.仅在2006年4月初,该命令才学会采取差异选项.
因此,高级用户倾向于使用whatchanged自2005年5月中旬以来已经存在的' '并支持差异选项.


这就是现在手册的新版本git whatchanged所说的:

鼓励新用户使用git log.该 whatchanged命令基本上与git log 默认情况相同,但默认显示原始格式diff输出并跳过合并.

该命令主要是出于历史原因; 很久以前git log通过阅读Linux内核邮件列表发明了很多人学习Git的手指都经过培训才能打字.

至于torek 评论,git log相当于:

git log --raw --no-merges
Run Code Online (Sandbox Code Playgroud)

(那会避免这个问题)

  • 感谢您回来并添加.总的来说,我认为整个git社区非常感谢你,Charles Bailey,JakubNarębski以及其他任何把这么多时间放在SO :)上的git问题的人. (2认同)
  • 可能应该提到的是,您可以使用 `git log --raw --no-merges` 来获得相同的效果,而无需使用名义上已弃用的命令。 (2认同)

GoZ*_*ner 13

在最简单的形式中,'git log'显示每个提交(sha,author,date,message),而'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
Run Code Online (Sandbox Code Playgroud)

但是为了改变:

$ 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
Run Code Online (Sandbox Code Playgroud)

有很多选项可以改变每个命令的输出.例如'git whatchanged -p'显示diff/patch形式的变化.

  • 似乎答案是'不'.查看git源代码显示除了默认选项之外,两者是相同的.'git log'将'始终显示标题'; 'git whatchanged'将始终1)显示diff输出,2)简化历史记录和3)默认情况下使用原始diff格式. (2认同)
  • `git-whatchanged`在`git-log`时默认不包含合并.我没有找到选项,如果有的话,让`git-log`以与`git-whatchanged`相同的方式输出已更改文件的列表. (2认同)
  • @Ken - 你可以使用`git-log --stat`来显示已更改文件的列表(和IMO比`git-whatchanged`更好的列表,因为它显示了更改行的数量并支持颜色). (2认同)