在公司项目开发过程中,在使用 Git 进行多人协作时,你一定有过这样的经历:怎么我的代码无法合并到主分支?
这就是“冲突”!在多人协作的代码管理中,合并冲突是不可避免的。别担心,冲突并不意味着糟糕的事情发生了,它只是 Git 无法自动判断该如何合并不同修改时向你发出的提示。只要你理解冲突的原因,并学会正确地解决它,冲突其实并不难应对。
什么是 Git 冲突?
Git 冲突(merge conflict)通常发生在以下几种情况:
- 两个人同时修改了同一个文件的同一位置,然后尝试合并。
- 你自己在本地修改了某些内容,而远程也发生了不同的修改,拉取时冲突。
- 重写历史(如 rebase)或强推代码时,修改之间不一致。
简而言之:Git 不知道该保留哪一份修改,就需要你手动决定。
场景1:本地合并冲突
假设你在 main
分支上一个 hello.txt 文件,该文件有以下内容:
Hello World!
然后你创建了一个分支 feature-a
,把 Hello World!
改成:
Hi World!
同时,你或你的同事又在 main
分支直接把内容改成:
Hello Git!
此时,你想在本地将 feature-a
分支合并到 main
主分支:
git checkout feature-a
git merge main
结果会出现冲突。Git 会把 hello.txt
改成这样:
<<<<<<< HEAD
Hi World!
=