【问题标题】:Not able to think of a case where git diff master..lab and git diff master...lab would be different无法想到 git diff master..lab 和 git diff master...lab 会有所不同的情况
【发布时间】:2010-03-29 15:16:49
【问题描述】:
git diff master..lab 

它将产生两个分支的尖端之间的差异。

git diff master...lab # notice triple dot

它会引以为豪的 diff 从两个分支的共同祖先开始。

我想不出双点的结果与三点的结果不同的任何情况。

【问题讨论】:

    标签: git


    【解决方案1】:

    我知道你已经看过这个,但这是文档中的两个 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。这将告诉我们EG 之间的直接区别——即我们将看到FG 的组合以及DE 的反向补丁。

    另一方面,git diff master...lab 等价于 git diff C G - 它显示从两者的共同祖先(master 和 lab 的合并基础,即 @ 987654340@)。我们看到的差异将是FG 的组合。不包括DE

    三点符号的用例是当您想要查看您在尚未合并到主分支中的主题分支(实验室)上完成的所有工作时。你不关心在 master 上做了什么——你只对你在主题分支上所做的工作感兴趣。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      • 2014-04-11
      • 1970-01-01
      • 2014-04-21
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      相关资源
      最近更新 更多