git-log 和 git-whatchanged 之间的区别?
Posted
技术标签:
【中文标题】git-log 和 git-whatchanged 之间的区别?【英文标题】:Difference between git-log and git-whatchanged? 【发布时间】:2012-04-18 20:18:10 【问题描述】:-
给this answer 另一个问题,并且
鉴于 git-log 和 git-whatchanged 的手册页都说它们来自 git-rev-list...
...那么这两个命令有什么区别呢?为什么要同时拥有它们?
【问题讨论】:
最近的一次提交(2013 年 8 月)现在阐明了这两个命令之间的区别,并鼓励仅使用git log
。见my answer below
【参考方案1】:
commit 52f425e1(2013 年 8 月 30 日)提到:
鼓励新用户改用“
log
”。这些天来,这些命令是统一的,只是有不同的默认值。'
git log
' 在 2005 年 6 月上旬添加时仅允许您查看日志消息,没有差异。直到 2006 年 4 月上旬,该命令才学会采用差异选项。 因此,高级用户倾向于使用自 2005 年 5 月中旬以来已经存在并支持差异选项的“whatchanged
”。
这就是new version of the man page for git whatchanged
现在要说的:
鼓励新用户改用
git log
。这whatchanged
命令与git log
基本相同 但默认显示原始格式差异输出并跳过合并。保留该命令主要是出于历史原因; 许多人早在
git log
被发明之前就通过阅读 Linux 内核邮件列表学习了 Git,他们的手指都经过训练可以打字。
作为torek comments,git whatchanged
等价物将是:
git log --raw --no-merges
(这样可以避免this question)
【讨论】:
感谢您回来补充。总的来说,我认为整个 git 社区都非常感谢你、Charles Bailey、Jakub Narębski 以及其他任何将这么多时间花在 SO 上的 git 问题上的人 :)。 可能应该提到,您可以使用git log --raw --no-merges
来获得相同的效果,而无需使用名义上已弃用的命令。
@torek 谢谢。我见过***.com/q/54412432/6309,所以我相应地更新了这个答案。【参考方案2】:
在最简单的形式中,“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
但对于改变了什么:
$ 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' 以 diff/patch 形式显示变化。
【讨论】:
谢谢。有没有一个命令可以做而另一个命令根本做不到的功能? 看来答案是否定的。查看 git 源代码表明,除了默认选项之外,两者是相同的。 'git log' 将'总是显示标题'; 'git whatchanged' 将始终 1) 显示差异输出,2) 简化历史记录和 3) 默认使用原始差异格式。git-whatchanged
默认不包含合并,而 git-log
包含。我还没有找到让git-log
以与git-whatchanged
相同的方式输出更改文件列表的选项(如果有的话)。
@Ken - 您可以使用git-log --stat
显示更改文件的列表(IMO 比git-whatchanged
更好的列表,因为它显示更改的行数并支持颜色)。跨度>
文件名前面的:100644 100644 f2e4113... d415016...
部分代表什么?【参考方案3】:
我不完全同意。你能看到用log
合并更改的文件吗?
我没有找到这个功能,对于知道文件何时合并到某个分支非常有用,例如:
file c.c
in branch1
的提交日期为 2012 年 1 月 1 日,如果您合并到 branch2
,并且稍后想跟随 branch2
中引入该提交的日期,可以git log
帮助?如果你有合并,你可以用git whatchanged -m sha1
在其中搜索
【讨论】:
以上是关于git-log 和 git-whatchanged 之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章