git diff master..lab
Run Code Online (Sandbox Code Playgroud)
它会在两个分支的尖端之间产生差异.
git diff master...lab # notice triple dot
Run Code Online (Sandbox Code Playgroud)
它将从两个分支的共同祖先开始产生差异.
我无法想到双点的结果与三点的结果不同的任何情况.
Cas*_*bel 13
我知道你已经看过这个,但这里有两个来自文档的片段:
git diff [--options] <commit>..<commit> [--] [<path>...]这与之前的表格同义.(
git diff [--options] <commit> <commit> [--] [<path>...])
git diff [--options] <commit>...<commit> [--] [<path>...]此表单用于查看包含和最多为第二个的分支上的更改,从两者的共同祖先开始.
git diff A...B相当于git diff $(git-merge-base A B) B.
我可以看到这可能会混淆你- ..和...记法git的差异并不意味着同样的事情,因为他们修订上市做(如git的日志).
所以假设我们的历史看起来像这样:
A - B - C - D - E (master)
\
F - G (lab)
Run Code Online (Sandbox Code Playgroud)
换句话说,第一个片段告诉我们git diff master..lab相当于.这将告诉我们直接的差异之间和-即我们将看到的组合,以及反向补丁和.git diff master labgit diff E GEGFGDE
另一方面,git diff master...lab它等同于git diff C G- 它显示从第二个提交(实验室)开始的更改,从两者的共同祖先(master和lab的合并基础,即C)开始.我们看到的差异将是组合F和G.它不包括D和E.
三点表示法的用例是当您想要查看您在主题分支(实验室)上尚未合并到主数据库中的所有工作时.你不关心在大师身上做了什么 - 你只对你在主题分支上所做的工作感兴趣.