如何比较来自两个不同分支的文件?

我有一个脚本在一个分支中正常工作,并在另一个分支中被打破。 我想看两个版本并排看看有什么不同。 有没有办法做到这一点?

要清楚我不在寻找比较工具(我使用Beyond Compare)。 我正在寻找一个git diff命令,该命令将允许我将主版本与我当前的分支版本进行比较,以查看发生了什么变化。 我不在合并或任何其他事情中。 我只想说些类似的话

git diff mybranch/myfile.cs master/myfile.cs

git diff可以显示两个提交之间的区别:

git diff mybranch master -- myfile.cs

或者等同地:

git diff mybranch..master -- myfile.cs

使用后一种语法,如果任何一方是HEAD它可以被省略(例如, master..masterHEAD进行比较)。

你也可能对mybranch...master感兴趣mybranch...master (来自git diff docs):

这种形式是查看包含第二个<commit>的分支上的更改,从两个<commit>的共同祖先开始。 git diff A...B相当于git diff $(git-merge-base AB) B

换句话说,这会给中变化的差异master ,因为它从分歧mybranch (但不从那时起新的变化mybranch )。


在所有情况下,文件名前面的--分隔符表示命令行标志的结束。 这是可选的,除非Git会在参数引用提交或文件时感到困惑,但包括它并不是一个不好的习惯。 有关几个示例,请参阅https://stackoverflow.com/a/13321491/54249。


如果您有一个配置,则可以将相同的参数传递给git difftool


你可以这样做: git diff branch1:file branch2:file

如果您配置了difftool,那么您还可以: git difftool branch1:file branch2:file

相关问题:如何用visual diff程序查看git diff输出


更现代的语法:

git diff ..master path/to/file

双点前缀表示“从当前工作目录到”。 你也可以说:

  • master.. ,即与上述相反。 这和master
  • mybranch..master ,明确引用除当前工作树以外的其他状态。
  • v2.0.1..master ,即引用一个标签。
  • [refspec]..[refspec] ,基本上任何可以识别为代码状态的任何东西。
  • 链接地址: http://www.djcxy.com/p/3139.html

    上一篇: How to compare files from two different branches?

    下一篇: Delete forked repo from GitHub