gpt4 book ai didi

带点斜线工作树的三点对称符号的 Git diff

转载 作者:行者123 更新时间:2023-12-04 15:53:57 33 4
gpt4 key购买 nike

如何将 ... 语法与 ./ 工作树语法一起使用。

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

git diff master...HEAD

并且 ./ 语法与工作树进行比较,例如:

git diff master:./

..../ 可以一起使用吗?我试过这个:

git diff master..../

但它不起作用。

更新:

也许这是不可能的,因为 git merge-base master ./ 不受支持,尽管我希望它在内部执行 git merge-base master HEAD

最佳答案

(值得一提:这种特殊的基于 merge 的行为特定于 git diff。)

这是不可能的,因为索引和工作树都不是提交。 merge 基础计算是通过两个提交作为输入完成的。

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

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

上述 git rev-parse 的输出,在像上面这样的简单情况下,是三个哈希 ID:右侧的哈希 ID, merge 基础的哈希 ID,以及被否定的哈希 ID左手边。 (如果有多个 merge 碱基,它们都在 RHS 和取反的 LHS 之间。)

git diff 内部,这些相同的提交哈希 ID 以相同的顺序显示在数组中(下标零表示非否定 RHS)。 diff 代码注意到有多个正引用和一个最终否定引用,并在两个提交哈希 ID 上运行 git diff:中间的 merge 基础之一,以及非否定哈希 ID下标零。

由于索引和工作树都没有提交 ID,git diff 无法将它们提供给修订解析代码。这意味着同一 block 代码不能返回包含三个或更多元素的数组,最后一个元素标记为“否定”。

Git 可以,但没有,有完全不同的代码来处理这个问题。但由于它只是一个方便的语法,你可以自己做:

git diff $(git merge-base master HEAD)

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

关于带点斜线工作树的三点对称符号的 Git diff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52656994/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com