【发布时间】:2017-11-05 12:54:03
【问题描述】:
我想知道何时发生合并冲突。我的假设是它发生在两个分支中的文件都被修改时。更详细地说,如果一个文件在一个分支中被修改但在另一个分支中没有被修改,则将使用“修改”版本(“旧”版本被“新”版本替换)。
如果有两个“新”版本(来自两个分支),git 不知道要使用哪个版本,因此需要手动合并。
但是,我不确定我的理解。我可以想象,即使在两个分支中都修改了同一个文件,如果对彼此足够远的地方进行修改,也不会发生合并冲突。
【问题讨论】:
我想知道何时发生合并冲突。我的假设是它发生在两个分支中的文件都被修改时。更详细地说,如果一个文件在一个分支中被修改但在另一个分支中没有被修改,则将使用“修改”版本(“旧”版本被“新”版本替换)。
如果有两个“新”版本(来自两个分支),git 不知道要使用哪个版本,因此需要手动合并。
但是,我不确定我的理解。我可以想象,即使在两个分支中都修改了同一个文件,如果对彼此足够远的地方进行修改,也不会发生合并冲突。
【问题讨论】:
当文件中的一行(或多行)被多个人同时编辑时,会引发合并冲突。不一定必须在 2 个不同的分支中。
在第一个推送他的更改之后,任何其他尝试推送他的更改的人都会遇到合并冲突。
基本上 git 系统可以单独处理合并。但在这种情况下,它无法判断哪个版本是正确的,从而引发了合并冲突。
查看这篇文章了解更多信息: when exactly does a git merge conflict arise
【讨论】:
当不同人尝试修改同一行时,git中会发生合并冲突,并且无法自动合并到分支中。
例如,两个队友 fork 相同的 repo 并在他们的本地分支中进行了修改,并创建了一个 pull request 到 master。假设第 10 行被双方修改。
如果第一个人的更改已经合并到上游,并且如果第二个人的拉取请求仍然打开,它将显示更改无法自动合并,因为存在合并冲突,因为两个更改都是针对同一行和第二个进行的家伙的分支没有第一个人所做的更改。
在这种情况下,我们必须手动修复合并冲突。请参阅链接https://help.github.com/articles/resolving-a-merge-conflict-using-the-command-line/ 以了解如何从命令行手动修复它
【讨论】: