无法在已移动的文件上运行git diff

时间:2013-06-13 08:44:06

标签: git diff

好的方案如下。 。

  1. 将一堆文件移到GIT
  2. 中的新文件夹下
  3. 现在我想查看其中一个文件的提交历史记录
    • 通常git log filename就足够了
    • 由于文件已被移动,我可以使用git log--follow filename
    • 实现此目的
  4. --follow命令为我提供了完整的历史记录,但遗憾的是我无法将此历史记录中的两个SHA与特定文件进行比较
  5. 例如,我可以运行git diff SHA1 SHA2这将返回这些提交之间所做的所有文件更改

    但是,如果我尝试将其降低到文件级别进行比较(git diff SHA1 SHA2 filename),则不返回任何内容!

    (虽然SHAs的先前差异在此文件中显示了变化)

    有没有人遇到过这个......

    我理解在这个文件移动的提交之间,所以我尝试过像

    这样的变体
      

    git diff - 关注SHA1 SHA2文件名

    无济于事。

    有没有其他人经历过这个,如果有,他们有解决方案吗?

1 个答案:

答案 0 :(得分:4)

值得研究的另一个选择是-M。但是,在可能的情况下,这也无济于事,您可以手动告诉git正确的文件路径,如下所示:

git diff SHA1:path/to/file1 SHA2:path/to/file2

(路径需要相对于仓库的顶层)