导入
冲突是如何产生的?
学习在合并分支时可能出现冲突的原因。
新学习 Git 的用户常常担心合并冲突。只要我们合理规划分支,这类冲突通常并不难解决。
合并不同分支与快速前进(Fast-Forward)的区别
当两个分支修改了同一行源代码,或一个分支删除了某个文件而另一个分支更新了该文件的内容时,就会产生冲突。如果合并操作是快速前进(fast-forward),则不会发生冲突。当使用 git merge 合并两个不同的分支时,Git 无法判断应该保留哪个更改、丢弃哪个更改,这时就可能产生冲突。
...
Merge A and B
合并冲突示例
下面我们来看一个合并冲突是如何发生的。在下面的终端中,我们有一个包含活跃 master 分支的 Git 仓库,并添加了一个名为 file1.txt 的文件,同时在 main 分支上完成了一次初始提交。接着我们创建了两个分支:Branch_A 和 Branch_B,并在两个分支中修改了同一行代码,然后尝试将它们合并。
1$ git checkout -b Branch_A 2$ echo hello from Branch A > file1.txt 3$ git add file1.txt 4$ git commit -m "hello from Branch A"
现在我们创建另一个分支:
1$ git checkout master 2$ git checkout -b Branch_B 3$ echo Hello from Branch B > file1.txt 4$ git add file1.txt 5$ git commit -m "hello from Branch B"
接下来我们合并这两个分支。需要注意的是,在执行 git merge 命令时,必须位于其中一个要合并的分支上。
1(Branch_B) $ git merge Branch_A
让我们在终端中先创建这两个分支。首先创建 Branch_A 并进行修改;然后创建 Branch_B 并进行修改;最后运行 git merge 命令,观察冲突的出现。
Terminal
合并冲突错误
此时我们遇到了合并冲突错误。必须手动解决冲突才能完成合并。
1Auto-merging file1.txt 2CONFLICT (content): Merge conflict in file1.txt 3Automatic merge failed; fix conflicts and then commit the result.