我的存储库经历了以下更改:
foo
foo
... foo
的内容插入现有文件bar
和git rm foo
的顶部现在我想查看已删除文件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
不适合我,我该如何解决?谢谢!
答案 0 :(得分:117)
您想使用--follow
上的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”系列默认启用重命名检测;你还可以 使用“diff.renames”配置变量来禁用它。
感谢x-yuri的抬头!