我有一个脚本在一个分支中工作正常,在另一个分支中被破坏。 我想并排看两个版本,看看有什么不同。 有没有办法做到这一点?
要明确我不是在寻找比较工具(我使用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
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3138909