我有一个主分支,其中有 2 个分支,每个分支都包含在同一文件的同一行中添加的新函数
function test1() {
console.log("test")
}
function test2() {
console.log("test")
}
现在,当合并 2 个更改时,git 会说函数名称存在冲突
我希望 git 2 将 2 函数添加到彼此之上,如下所示: 需要示例
但是当我尝试进行这两个更改时实际发生了什么: 合并时会发生什么
嗯,一切正常。
我们来看看冲突是如何发生的。事情没那么简单,但就简单点吧:
如果你在2个不同的分支中更改同一行,git会要求你手动解决冲突,因为git无法决定选择哪一个。如何解决冲突取决于你。
如果您在两个不同的分支中更改同一行,但更改完全相同,则 git 不会产生冲突。没什么可解决的,它们是一样的。
根据这些信息,我们来分析一下你的问题。
两个分支都更改了第 1、2 和 3 行。但是,第二行和第三行的更改完全相同。所以 git 会说“仅在第一行有冲突”。
如果你想按照你想要的方式解决冲突,你只需在解决冲突后手动添加第二行和第三行,然后再提交即可。 Git 在解决冲突时保持编辑状态。您可以随意更改文件。
那么你偶然发现的事情是完全自然的,这就是所谓的冲突。冲突不会自动解决,您需要手动解决。将您的合并工具设置为 VS Code(或任何可以处理合并等 git 操作的优秀代码编辑器)并运行
git mergetool
- 它应该很好地标记出不同之处,并且由您决定如何处理。
任何自动合并冲突的尝试都会导致意外的输出,正如您在自己的示例中看到的那样。
自动解决冲突的情况很少见,应谨慎使用(例如
git rerere
)。
要将 VS Code 设置为 git 编辑器(mergetool 或 difftool),请点击描述中的链接: