繁体   English   中英

为什么“ git log-foo”对删除的文件foo不起作用?

[英]Why doesn't “git log -‌- foo” work for deleted file foo?

我的存储库进行了以下更改:

  1. ...一些无关的提交...
  2. 提交包含100行内容的新文件foo
  3. ...中间的提交,其中一些触摸foo ...
  4. foo的内容插入到现有文件bar的顶部,并在同一提交中插入git 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不能git log -- foo对我git log -- foo ,我该如何解决? 谢谢!

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

Continue listing the history of a file beyond renames.

实际上,这不仅使您可以查看重命名文件的历史记录,而且还可以使您不再在工作树中查看文件的历史记录。 因此,您应使用的命令应类似于:

git log --follow -- foo

更新:

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

默认情况下,面向“ git diff”和“ git log”系列的瓷器级别命令的最终用户将启用重命名检测; 您仍然可以使用“ diff.renames”配置变量来禁用此功能。

感谢x-yuri的注意!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM