在远程协作开发中,每个人都在自己的分支上写代码,改功能,修 Bug。等到差不多了,就得把各自的改动整合到一起。这时候,本地仓库的分支合并就成了家常便饭。
为什么要合并分支?
比如你负责做登录页面,同事小李在另一个分支优化注册流程。你们俩互不干扰,各自推进。等都完成了,项目主干(通常是 main 或 master 分支)就得把这两块内容合进去。这个过程就是在本地仓库完成分支合并操作。
基本合并流程
先确认你现在在哪个分支。打开终端,输入:
git status
假设你要把 login-feature 分支合并进 main,得先切到 main:
git checkout main
然后执行合并:
git merge login-feature
如果没冲突,Git 会自动提交合并结果。这时候你的 main 分支就已经包含了 login-feature 的所有改动。
遇到冲突怎么办?
多人同时改同一个文件,很容易撞车。比如你和小李都在改 user.js,合并时 Git 就不知道该用谁的版本,这时候就会提示冲突。
终端会显示类似这样的信息:
CONFLICT (content): Merge conflict in src/user.js
别慌,打开那个文件,你会看到这样的标记:
<<<<<<< HEAD
console.log("当前用户已登录");
=======
console.log("用户状态:在线");
>>>>>>> login-feature
上面那段是当前分支(main)的内容,下面是被合并分支(login-feature)的内容。你需要手动决定保留哪段,或者重新写一段新的,删掉 <<<<<<<、======= 和 >>>>>>> 这些标记。
改完之后,保存文件,再告诉 Git 冲突解决了:
git add src/user.js
接着提交合并:
git commit -m "合并 login-feature,解决冲突"
小贴士
合并前最好先拉一下最新代码,避免别人刚提交的内容被你忽略:
git pull origin main
另外,合并完如果发现有问题,可以用 git reset --hard HEAD~1 回退一次提交(仅限本地未推送的情况)。但要小心,这会丢掉最近一次提交。
平时开发建议用 feature 分支干活,改完再合并进主干,这样主分支干净,出问题也容易排查。