gpt4 book ai didi

git - 为什么 git 在更改彼此相邻的行时会产生 merge 冲突?

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

假设我在 master 中有一个包含此内容的文件:

Line 1
Line 2
Line 3
Line 4

现在假设我创建并 check out 一个名为 test 的新分支。在这个分支中,我将文件更改为:

Line 1
Line 2
Line 3 Modified
Line 4

然后我提交并切换回 master。在 master 中,我将文件更改为:

Line 1
Line 2
Line 3
Line 4 Modified

我 promise 。现在,如果我将分支 test merge 到 master 中,就会发生冲突。

为什么 git 不能自动解决这个问题,使用共同的祖先?如果我告诉 git 使用 BeyondCompare 作为 difftool 来编辑冲突,BeyondCompare 会自动解决这个问题,甚至不会告诉用户,因为这不是真正的冲突。有没有办法让 git 自动解决这些问题?我尝试了 recursiveresolve merge 策略,但都没有。

这是我们公司的一个问题,因为在某些文件中,多个开发人员在很近的地方换行,这会在他们 pull 时造成许多不必要的冲突。

最佳答案

Git 如此行为的原因在这个问题的答案中得到了很好的解释:

https://softwareengineering.stackexchange.com/questions/194788/why-doesnt-git-merge-adjacent-lines-without-conflict/378258#378258

本质上,因为你需要相邻的行来提供变化的上下文(你不能只使用行号,因为上面可能已经添加或删除了一些东西),如果它周围的行发生了变化,你通常不会希望 Git 天真地继续 merge 。用户 Arsen7 在该线程中给出了一个很好的例子,说明这可能会出现严重错误。

但是,我同意你的看法,有时这很烦人,所以我编写了一个自定义 merge 驱动程序,可以在 merge/ rebase 过程中解决此类冲突。它被设计为交互式的,因为我总是想在继续之前检查它是否会做正确的事情,但如果您确信它会正常工作,您可以轻松地修改它,使其不正确。

如果您有兴趣,可以在 GPLv3+ 许可下在 GitHub 上获得该脚本:

https://github.com/paulaltin/git-subline-merge

关于git - 为什么 git 在更改彼此相邻的行时会产生 merge 冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29276880/

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