【问题标题】:git diff HEAD^ HEAD <filename> displays nothinggit diff HEAD^ HEAD <filename> 什么都不显示
【发布时间】:2014-03-05 14:03:34
【问题描述】:

我正在尝试显示最后一次提交和之前提交之间的差异:

git diff HEAD^ HEAD <filename>

但这什么也没显示。事实上,我知道这两个提交之间是有区别的。

我做错了什么,我应该如何纠正?

P.S.:感觉这个问题之前已经讨论过很多次了,但是不知怎么找不到有用的参考。

【问题讨论】:

  • git show 是否显示您尝试比较的文件?

标签: git


【解决方案1】:

如果该特定文件在 HEAD^HEAD 之间没有任何更改,它将不会显示任何内容。

请注意,使用 git1.8.5+,您可以执行以下操作:

git diff @^ -- afile

@ 表示HEAD


git log -p -- aFile 将提供所有 SHA1,如果该文件发生更改。
-p 用于显示差异)


查看文件的最后修改(无需处理 HEAD 或其他 SHA1):

git log -1 -p -- aFile

【讨论】:

  • 但它确实在最新提交和之前的提交之间发生了变化,这就是我想要展示的内容
  • @amphibient git log -- aFile 显示最新提交和之前的提交(与简单的git log 相比)?
  • 根据 OP,对于这个文件,HEAD 和最后一次提交之间似乎存在差异。我想知道缓存是否可能与这种行为有关。
  • @aduch 不一定:该文件的“最后”提交可能根本不是回购的最新提交。或者,该文件的“先前”提交可能比存储库的实际“先前”提交更旧。
  • 是的,git log 正在显示特定文件的提交历史记录。我还认为我暂存了这个特定文件这一事实可能有事可做,但我还在一个我从未接触过的非暂存、未更改的干净文件上进行了测试并得到了相同的行为
【解决方案2】:

您在 HEAD 中对特定文件所做的更改显然不在 HEAD^ 中,否则它根本不会成为提交的一部分。

查看这些更改的命令是:git show HEAD -- &lt;filename&gt;

【讨论】:

    猜你喜欢
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 2020-05-17
    • 2021-07-04
    • 2018-02-14
    • 2011-01-14
    • 2018-06-25
    • 2010-09-26
    相关资源
    最近更新 更多