Git 将 2 个具有相似更改的分支合并为 2 个不同的分支

问题描述 投票:0回答:2

我有一个主分支,其中有 2 个分支,每个分支都包含在同一文件的同一行中添加的新函数

function test1() {
    console.log("test")
}

function test2() {
    console.log("test")
}

文件示例

现在,当合并 2 个更改时,git 会说函数名称存在冲突

我希望 git 2 将 2 函数添加到彼此之上,如下所示: 需要示例

但是当我尝试进行这两个更改时实际发生了什么: 合并时会发生什么

git merge
2个回答
0
投票

嗯,一切正常。

我们来看看冲突是如何发生的。事情没那么简单,但就简单点吧:

  1. 如果你在2个不同的分支中更改同一行,git会要求你手动解决冲突,因为git无法决定选择哪一个。如何解决冲突取决于你。

  2. 如果您在两个不同的分支中更改同一行,但更改完全相同,则 git 不会产生冲突。没什么可解决的,它们是一样的。

根据这些信息,我们来分析一下你的问题。

两个分支都更改了第 1、2 和 3 行。但是,第二行和第三行的更改完全相同。所以 git 会说“仅在第一行有冲突”。

如果你想按照你想要的方式解决冲突,你只需在解决冲突后手动添加第二行和第三行,然后再提交即可。 Git 在解决冲突时保持编辑状态。您可以随意更改文件。


0
投票

那么你偶然发现的事情是完全自然的,这就是所谓的冲突。冲突不会自动解决,您需要手动解决。将您的合并工具设置为 VS Code(或任何可以处理合并等 git 操作的优秀代码编辑器)并运行

git mergetool
- 它应该很好地标记出不同之处,并且由您决定如何处理。

任何自动合并冲突的尝试都会导致意外的输出,正如您在自己的示例中看到的那样。

自动解决冲突的情况很少见,应谨慎使用(例如

git rerere
)。

要将 VS Code 设置为 git 编辑器(mergetool 或 difftool),请点击描述中的链接:

使用 VSCode 作为 git mergetool 和 difftool

如何使用 Visual Studio Code 作为 Git MergeTool 的默认编辑器

© www.soinside.com 2019 - 2024. All rights reserved.