【问题标题】:Why can I not see changes made to a specific file?为什么我看不到对特定文件所做的更改?
【发布时间】:2014-12-22 10:29:57
【问题描述】:

当我运行git log 时,我可以看到我几天前创建的提交,其中包含对某个文件的更改(我们称之为x.txt)。

但是,当我运行 git log -p x.txt 时,应该会显示此文件上的 git 更改,但我看不到有问题的提交。

如何解释这种情况?

【问题讨论】:

  • git log -- x.txt 是否包含您认为应该包含的提交?
  • @VonC 不,它不存在 :(
  • 如果您采用git log 向您显示的提交SHA-1(称为XXXXXX)并执行git show XXXXXX,会发生什么情况?里面有变化吗?也许您认为更改了x.txt 的提交实际上并没有更改x.txt。也许将其添加到问题中,以及 git diff XXXXXX{,^} 显示的内容。
  • 我已经检查过了,当我做 git show XXXXX 时,我可以在 x.txt 上看到我的更改

标签: git git-log


【解决方案1】:

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 选项会将给定文件的提交与之前的提交进行比较,除非创建了该文件(在这种情况下,该文件没有之前的提交)

这意味着 git log -p -- x.txt 在最初添加文件时不会包含第一次提交。
那个“差异”就是x.txt 的全部内容。


但在 OP Yarin Gold 的案例中:

所有这些都在 OS X (10.9.5) 上使用 git 版本 1.9.3 (Apple Git-50)。

【讨论】:

  • 我对文件的更改(文件有一些更改)是第二次提交(第一次当然是创建文件)。
  • @YarinGold 如果git log -- x.txt 没有列出您的第二次提交,那么第二次提交不会对x.txt 进行任何更改。我已经改写了我的答案以使其更清楚。
  • 第二次提交肯定对文件有一些变化。
  • 也许其他一些开发人员做了一些导致它的事情?这就是我想要弄清楚的。
  • @YarinGold 但你说git log -- x.txt 不包括那个提交?这确实意味着此提交明确没有x.txt进行任何更改,不是吗?
猜你喜欢
  • 1970-01-01
  • 2015-07-11
  • 1970-01-01
  • 1970-01-01
  • 2019-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多