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

标签 git diff

好的,场景如下。 . .

  1. 将一堆文件移动到 GIT 中的一个新文件夹下
  2. 现在我想查看其中一个文件的提交历史
    • 通常 git 日志文件名 就足够了
    • 由于文件已移动,我可以使用 git log--follow filename
    • 实现此目的
  3. --follow 命令为我提供了完整的历史记录,但遗憾的是我无法比较特定文件的历史记录中的两个 SHA

例如,我可以运行 git diff SHA1 SHA2:这将返回这些提交之间所做的所有文件更改

但是,如果我尝试将其降低到文件级别进行比较(git diff SHA1 SHA2 filename),它什么都不返回!

(尽管之前的 SHA 差异显示了此文件中的更改)

有没有人遇到过这个..

我知道在两次提交之间这个文件已经移动,所以我尝试了类似的变体

git diff --follow SHA1 SHA2 filename

没用。

有没有其他人遇到过这种情况,如果有,他们有解决办法吗?

最佳答案

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

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

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

关于git - 无法在已移动的文件上运行 git diff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17082814/

相关文章:

git - 如何在不提交的情况下关闭 GitHub 问题?

c++ - 差异算法 C++

string - Perl 文本差异颜色

linux - bash 找不到 git 命令 : No such file or directory

git - 如何将gitorious迁移到gitlab仓库

git - 恢复分支看起来像主人?

git - vim diff 可以使用 patience 算法吗?

diff - 多文件统一差异是否需要索引 : lines?

linux - 在 linux 中,如何仅按文件名比较两个目录并获取不匹配的结果列表

git - 删除git分支会失去审核