为什么不“git log-foo”为删除的文件foo工作?
我的存储库进行了更改,如:
- 一些不相关的提交
- 用100行内容提交新文件
foo
- …介入承诺,其中一些触摸
foo
… - 将
foo
的内容插入现有文件bar
的顶部,并在相同的提交中将git rm foo
插入 - …更无关的提交…
现在我想看看删除的文件foo
的日志。 我读过的所有东西,包括SO,都说我应该可以用git log -- foo
,但是这个命令没有输出。
如果我发现包括删除foo
的提交,我可以git log 1234abcd -- foo
并查看它的日志,所以我认为我的path不是问题。 还要注意, git merge-base HEAD 1234abcd
输出1234abcd[...]
,所以我认为这应该certificate提交可以从HEAD
。 请注意,在我的工作树中没有文件foo
(显然,因为它已被删除)。 在OS X上使用Git 1.7.1.1。
为什么不git log -- foo
为我工作,我该如何解决它? 谢谢!
你想在git log
上使用--follow
选项,在手册页中描述为:
Continue listing the history of a file beyond renames.
实际上,这不仅允许您查看重命名文件的历史logging,还可以让您不再在工作树中查看文件的历史logging。 所以你应该使用的命令应该是这样的:
git log --follow -- foo
更新:
Git 2.9+现在默认启用了所有的git diff
和git log
命令:
在“git diff”和“git log”系列中面向Porcelain level命令的最终用户默认启用重命名检测; 你仍然可以使用“diff.renames”configurationvariables来禁用它。
感谢x-yuri的高举!