当我运行git log
时,我可以看到我几天前创建的提交,其中包含对某个文件的更改(让我们称之为x.txt
)。
但是,当我运行git log -p x.txt
时,它应该显示此文件的git更改,我看不到有问题的提交。
如何解释这种情况?
答案 0 :(得分:2)
git log -p
实际上使用git diff
选项(--patch
)
如果git log -- x.txt
没有显示所有预期的提交,那么它只是意味着提交没有为该文件引入任何差异。
该提交的git diff -- x.txt
为空。
在extensive discussion之后,这项工作(这意味着x.txt
在某个时候被重命名或移动):
git log --follow -M -p -- x.txt
另一种情况是git log -p -- x.txt
不包含提交:
-p
选项会将提交与给定文件的前一个提交进行比较,除非该文件已创建(在这种情况下,该文件之前没有提交)< / p>
这意味着git log -p -- x.txt
在最初添加文件时不会包含第一次提交。
那&#34;差异&#34;只是x.txt
的完整内容。
在OP Yarin Gold的案例中,但是:
git show <expected_commit_SHA> -- x.txt
返回预期的差异git show --pretty="format:" --name-only <expected commit>
会列出x.txt
*(在/ ...中)git diff <expectedcommit~1> <expectedcommit> -- x.txt
(再次)返回预期的更改在OS X(10.9.5)上使用git版本1.9.3(Apple Git-50)的所有内容。