【发布时间】:2012-04-18 20:18:10
【问题描述】:
- 给this answer 另一个问题,并且
- 鉴于 git-log 和 git-whatchanged 的手册页都说它们来自 git-rev-list...
...那么这两个命令有什么区别呢?为什么要同时拥有它们?
【问题讨论】:
-
最近的一次提交(2013 年 8 月)现在阐明了这两个命令之间的区别,并鼓励仅使用
git log。见my answer below
...那么这两个命令有什么区别呢?为什么要同时拥有它们?
【问题讨论】:
git log。见my answer below
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 log --raw --no-merges 来获得相同的效果,而无需使用名义上已弃用的命令。
在最简单的形式中,“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-whatchanged 默认不包含合并,而 git-log 包含。我还没有找到让git-log 以与git-whatchanged 相同的方式输出更改文件列表的选项(如果有的话)。
git-log --stat 显示更改文件的列表(IMO 比git-whatchanged 更好的列表,因为它显示更改的行数并支持颜色)。跨度>
:100644 100644 f2e4113... d415016... 部分代表什么?
我不完全同意。你能看到用log合并更改的文件吗?
我没有找到这个功能,对于知道文件何时合并到某个分支非常有用,例如:
file c.c in branch1 的提交日期为 2012 年 1 月 1 日,如果您合并到 branch2,并且稍后想跟随 branch2 中引入该提交的日期,可以git log 帮助?如果你有合并,你可以用git whatchanged -m sha1在其中搜索
【讨论】: