我有一个脚本在一个分支中工作正常,在另一个分支中被破坏。 我想并排看两个版本,看看有什么不同。 有没有办法做到这一点?
要明确我不是在寻找比较工具(我使用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..
将master
与HEAD
进行比较)。
你可能也对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