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

浪尽此生 提交于 2019-12-09 13:10:36

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

要明确我不是在寻找比较工具(我使用Beyond Compare)。 我正在寻找一个git diff命令,它允许我将主版本与我当前的分支版本进行比较,看看有什么变化。 我不是在合并或任何事情的中间。 我只想说些什么

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

#1楼

更现代的语法:

git diff ..master path/to/file

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

  • master.. ,即上面的反面。 这跟master
  • mybranch..master ,显式引用当前工作树以外的状态。
  • v2.0.1..master ,即引用标记。
  • [refspec]..[refspec] ,基本上可以识别为git的代码状态。

#2楼

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

如果你配置了difftool,那么你也可以: git difftool branch1:path/to/file branch2:path/to/file

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


#3楼

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

git diff mybranch master -- myfile.cs

或者,等效地:

git diff mybranch..master -- myfile.cs

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

你可能也对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


#4楼

我只是做git diff branch1 branch2 path/to/file

这将检查文件之间的差异。 branch1更改将为红色。 branch2更改将为绿色。

假设branch1是过去而branch2是未来。 您可以通过反转diff: git diff branch2 branch1分支的顺序来反转此git diff branch2 branch1


#5楼

同意@dahlbyk建议的答案。 如果要将diff写入diff文件以进行代码审查,请使用以下命令。

git diff branch master -- filepath/filename.extension > filename.diff --cached
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!