Bol*_*wyn 10 git diff command-line-interface
我发现自己经常处于这样一种情况,我希望看到所有变化的差异,即从分支开始引入的分支.天真
$ git diff ..branch
Run Code Online (Sandbox Code Playgroud)
效果不好,因为master也考虑了变化.我正在寻找的基本上是一种更好的运行方式
$ git diff $(git merge-base master branch)..branch
Run Code Online (Sandbox Code Playgroud)
或以图形表示:
---A---B---C---D---E <== master
\
F---G---H <== branch
Run Code Online (Sandbox Code Playgroud)
如何优雅之间找到的差异B和H?
编辑:如下面的答案中所述,master...branch是我的问题的解决方案.但是,我仍然不知道,为什么会这样,给出引用的手册页片段.
为什么diff master...branch只显示与合并基础的差异,同时man rev-parse说,它应该也包括master提交?
为什么要diff master..branch显示当前状态master和之间的差异branch,虽然man rev-parse说,它应该忽略master-only提交?
经过广泛的观察git help rev-parse和实验,我发现了这条信息:
<rev1>..<rev2>
Include commits that are reachable from <rev2> but exclude those
that are reachable from <rev1>. When either <rev1> or <rev2> is
omitted, it defaults to HEAD.
<rev1>...<rev2>
Include commits that are reachable from either <rev1> or <rev2>
but exclude those that are reachable from both. When either <rev1>
or <rev2> is omitted, it defaults to HEAD.
Run Code Online (Sandbox Code Playgroud)
不知怎的,我总是在印象中,这master..branch就是我需要和忘记的master...branch(有三个点).
但试验它表明,三点符号正是我正在寻找的:
$ git diff master...branch
Run Code Online (Sandbox Code Playgroud)
仅显示branch相对于起飞位置的差异master.