代码之家  ›  专栏  ›  技术社区  ›  kiewic

带点斜杠工作树的Git-diff三点对称表示法

git
  •  2
  • kiewic  · 技术社区  · 6 年前

    ... 语法与 ./ 工作树语法。

    这个 ... 语法在内部执行 git merge-base master HEAD ,例如:

    git diff master...HEAD
    

    以及 语法与工作树进行比较,例如:

    git diff master:./
    

    一起?我试过这个:

    git diff master..../
    

    但它不起作用。

    也许这是不可能的,因为 git merge-base master ./ 不支持,但我希望它在内部 .

    1 回复  |  直到 6 年前
        1
  •  1
  •   torek    6 年前

    (值得一提的是:这种特殊的合并基行为是特定于 git diff

    这是不可能的,因为索引和工作树都不是提交。合并基计算以两个提交作为输入。

    更准确地说, git diff A...B A...B 使用与相同的代码 git rev-parse :

    $ git rev-parse origin/master...master
    80b88a51c112215a56f0e73dab804c4e17248f3b
    3afc4b6899bfb87ca3e397c62463fc9cdd070fb6
    ^3afc4b6899bfb87ca3e397c62463fc9cdd070fb6
    

    上面的输出

    内部 差异比较 差异比较 在两个提交哈希ID上:中间的一个合并基和下标0处的非求反哈希ID。

    无法将它们提供给修订解析代码。这意味着这段代码不能返回一个包含三个或更多元素的数组,最后一个元素标记为“negated”。

    能够 ,但没有完全不同的代码来处理此问题。但由于这只是一种方便的语法,您可以自己进行:

    git diff $(git merge-base master HEAD)
    

    比较的合并基 master HEAD (或一个随机选择的合并基,在多个基的情况下)添加到当前工作树,或添加 --cached 将相同的合并基与索引进行比较。