"git whatchanged -- filename"和"git rev-list -- filename"有什么区别?

6
下面两个命令有何不同?我看到输出结果不同。两者都是在只有一个分支的克隆中运行的。
git diff:比较工作树和暂存区之间的差异。
git diff --cached:比较暂存区和HEAD(最后一次提交)之间的差异。
git whatchanged -m -- foo.c

git rev-list --reverse --all -- foo.c
1个回答

3
git whatchanged手册中所述: 显示每个提交引入的提交日志和差异输出。该命令在内部调用git rev-list管道到git diff-tree,并为这两个命令提供了命令行选项。
“管道到git diff-tree”将解释两个命令之间的不同输出。
您可以在“在Git中,如何获取发生在两个日期之间的所有提交之间的差异?”中找到结合使用git rev-listgit diff的示例。
更新于2013年9月: git whatchanged的新手册版本现在强调
鼓励新用户使用git logwhatchanged命令本质上与git log相同,但默认显示原始格式的差异输出并跳过合并。
该命令主要出于历史原因而保留;许多人在学习Git之前通过阅读Linux内核邮件列表来打字,他们的手指已经习惯了它。
请参见“git-log和git-whatchanged之间的区别?”。

谢谢!那么,如果我想查看文件发生了什么(检查合并中的代码丢失或其他情况),哪个命令最好? - Senthil A Kumar
@SenthilAKumar:如果涉及检查内容的更改,则git whatchanged是一个很好的起点。我在我的答案中链接的问题提供了基于git diff的其他替代方案。 - VonC
@SenthilAKumar:我没有看到你的编辑。你最初的问题似乎没有改动过。 - VonC
类似的问题可以在http://stackoverflow.com/questions/8414940/git-log-and-git-whatchanged-shows-2-commits-but-both-have-same-lines-added-so找到。 - Senthil A Kumar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接