我有一个脚本在一个分支中工作正常,在另一个分支中被破坏。我想并排看两个版本,看看有什么不同。有没有办法做到这一点?
要明确我不是在寻找比较工具(我使用 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..
将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
。
你可以这样做: git diff branch1:file branch2:file
如果你配置了 difftool,那么你也可以: git difftool branch1:file branch2:file
更现代的语法:
git diff ..master path/to/file
双点前缀表示 “从当前工作目录到”。你也可以说:
master..
,即上面的反面。这跟master
。 mybranch..master
,显式引用当前工作树以外的状态。 v2.0.1..master
,即引用标记。 [refspec]..[refspec]
,基本上可以识别为 git 的代码状态。