git diff master..lab
它会在两个分支的尖端之间产生差异。不能想到一个情况,其中git diff master..lab和git diff master ... lab会有所不同
git diff master...lab # notice triple dot
它会产生从两个分支的共同祖先开始的差异。
我不能认为任何方案,其中从双点的结果将是从三个点的结果不同。
git diff master..lab
它会在两个分支的尖端之间产生差异。不能想到一个情况,其中git diff master..lab和git diff master ... lab会有所不同
git diff master...lab # notice triple dot
它会产生从两个分支的共同祖先开始的差异。
我不能认为任何方案,其中从双点的结果将是从三个点的结果不同。
我知道你已经看到了这一点,但这里的是从文档两个片段:
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)
的第一个片段告诉我们,git diff master..lab
相当于git diff master lab
,换句话说git diff E G
。这将告诉我们E
和G
之间的直接差异 - 即我们将看到F
,G
的组合和D
和E
的反向补丁的组合。
在另一方面,git diff master...lab
相当于git diff C G
- 它显示了改变到第二提交(实验室)来自两个(主设备和实验室合并的基础上,这是C
)的共同祖先开始。我们看到的差异将是F
和G
组合。它不包括D
和E
。
的应用案例三重点符号是,当你想看到所有您在自己的特性分支(实验室)来完成,这不是合并到主还没有工作。你不在乎主人还做了什么 - 你只关心你在主题分支上做的工作。
精彩。很好地解释。谢谢 – 2010-03-29 18:15:23