gpt4 book ai didi

git - 如何审查 merge 提交以检测不正确的大块头

转载 作者:太空狗 更新时间:2023-10-29 14:11:39 24 4
gpt4 key购买 nike

通常在审查 merge 提交时,我们会做 git diff-tree --cc <commit> (或简称为 git show <commit> ),但我面临以下问题:

假设你 merge B进入A在解决冲突期间,您需要从 A 中选择一个帅哥或 B分支来解决它。比方说 A 中的帅哥取代了 B 中的帅哥出于某种原因,但由于您可能不知道它并仅通过例如判断提交日期,你从 B 中选择 hunk分支机构。

如果除此之外你没有做其他修改,多父差异通过git show不会显示任何差异输出,因为生成的 block 完整地包含在其中一个父提交中。

进一步详细说明,如果您有此冲突:

<<<<<<< HEAD
aaa
=======
bbb
>>>>>>> b

并删除 aaa hunk 并选择 bbb ,反之亦然,git show <merge_commit>根本不会显示任何内容,因此您无法看到在 merge 过程中选择了什么大块头。

这可能会导致难以发现的回归。

我如何才能看到在解决冲突期间选择了哪些帅哥?

编辑:我所追求的是只查看发生冲突的帅哥(因此不会自动 merge )。

最佳答案

Edit: what I'm after is to view just the hunks that were conflicted (thus not auto-merged).

不是您要找的答案:git 命令无法做到这一点。 git 不会跟踪 merge 是如何以任何方式或方式解决的(git rerere 缓存除外,尽管它在这里对我们没有帮助)。您可能需要类似于“4 向差异”(A、B、公共(public)父级和 merge 结果)之类的东西,这是我从未听说过的。

理论上,您可以返回并自己编写一个程序,重新执行原始的 3 向 merge 以生成中间文件(带有冲突标记)并将 that 与 merge 结果进行比较. git 没有为你做这些的规定。

编辑:提到了 git rerere,尽管它在这里没有帮助。

关于git - 如何审查 merge 提交以检测不正确的大块头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39269532/

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