【发布时间】:2010-03-29 15:16:49
【问题描述】:
git diff master..lab
它将产生两个分支的尖端之间的差异。
git diff master...lab # notice triple dot
它会引以为豪的 diff 从两个分支的共同祖先开始。
我想不出双点的结果与三点的结果不同的任何情况。
【问题讨论】:
标签: git
git diff master..lab
它将产生两个分支的尖端之间的差异。
git diff master...lab # notice triple dot
它会引以为豪的 diff 从两个分支的共同祖先开始。
我想不出双点的结果与三点的结果不同的任何情况。
【问题讨论】:
标签: git
我知道你已经看过这个,但这是文档中的两个 sn-ps:
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 diff 的 .. 和 ... 表示法与修订列表(例如 git log)的含义不同。
所以假设我们的历史是这样的:
A - B - C - D - E (master)
\
F - G (lab)
第一个sn-p告诉我们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 - 它显示从两者的共同祖先(master 和 lab 的合并基础,即 @ 987654340@)。我们看到的差异将是F 和G 的组合。不包括D 和E。
三点符号的用例是当您想要查看您在尚未合并到主分支中的主题分支(实验室)上完成的所有工作时。你不关心在 master 上做了什么——你只对你在主题分支上所做的工作感兴趣。
【讨论】: