90

我的存储库进行了更改,例如:

  1. ...一些不相关的提交...
  2. 提交foo包含 100 行内容的新文件
  3. ...干预提交,其中一些涉及foo...
  4. foo在现有文件的顶部bargit rm foo同一个提交中插入 的内容
  5. ...更多不相关的提交...

现在我想查看已删除文件的日志foo。我读过的所有内容,包括关于 SO 的内容,都说我应该能够git log -- foo,但是该命令不会产生任何输出。

如果我找到包含删除的提交,foo我可以git log 1234abcd -- foo看到它的日志,所以我认为我的路径foo不是问题。还要注意git merge-base HEAD 1234abcd输出1234abcd[...],所以我认为应该证明提交可以从HEAD. foo请注意,我的工作树中没有文件(很明显,因为它已被删除)。在 OS X 上使用 Git 1.7.1.1。

为什么git log -- foo对我不起作用,我该如何解决?谢谢!

4

1 回答 1

121

您想使用--followon 选项git log,手册页中将其描述为:

Continue listing the history of a file beyond renames.

实际上,这不仅允许您查看重命名文件的历史记录,而且还允许您查看不再位于工作树中的文件的历史记录。所以你应该使用的命令应该类似于:

git log --follow -- foo

更新:

Git 2.9+ 现在默认为所有命令启用此git diff功能git log

“git diff”和“git log”系列中面向Porcelain级别的最终用户默认启用重命名检测;您仍然可以使用“diff.renames”配置变量来禁用它。

感谢 x-yuri 的提醒!

于 2011-11-08T01:36:37.893 回答