提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
在 Git 中,当你尝试将两个分支(例如 dev
和 master
)合并时,如果它们在同一文件的同一部分有不同的修改,就会产生冲突(conflict)。解决冲突需要手动调整这些冲突的部分,然后继续完成合并。以下是详细的解决冲突的步骤:
提示:以下是本篇文章正文内容,下面案例可供参考
1. 确保工作目录干净
在合并分支之前,确保当前分支的工作目录是干净的(没有未提交的更改),以免产生额外的合并问题。你可以使用以下命令查看当前工作目录状态:
git status
2. 切换到 master
分支(或目标分支)
切换到你希望合并到的目标分支(通常是 master
):
git checkout master
3. 合并 dev
分支到 master
分支
使用以下命令将 dev
分支合并到 master
分支中:
git merge dev
如果 dev
和 master
分支有冲突,Git 会提示你冲突的文件和位置。
4. 解决冲突
编辑冲突的文件,手动解决冲突部分。冲突的代码块通常格式如下:
<<<<<<< HEAD
内容来自当前分支(master)
=======
内容来自合并分支(dev)
>>>>>>> dev
你需要根据实际情况,决定保留哪一部分,或者手动合并它们的内容。修改后的文件可能是这样:
合并后的最终代码内容
完成每个冲突文件的修改后,保存文件并退出编辑器。
5. 标记冲突已解决并提交
解决所有冲突后,执行以下命令将修改添加到暂存区(staging area):
git add <冲突文件1> <冲突文件2> ...
然后提交解决冲突后的更改:
git commit -m "解决 dev 与 master 的冲突"
6. 继续合并或推送
完成合并后,你可以将 master
分支推送到远程仓库:
git push origin master
7. 其他常见的合并策略
使用 git rebase
将 dev
分支变基到 master
上
如果你希望将 dev
分支上的所有提交放在 master
分支之上,可以使用 git rebase
。这种方法会避免产生多余的合并提交,但会修改 dev
分支的提交历史,因此在多人协作时需要慎用。
# 切换到 dev 分支
git checkout dev
# 基于 master 分支变基
git rebase master
如果在 rebase
过程中有冲突,你需要手动解决冲突,然后使用以下命令继续 rebase
:
# 标记冲突已解决
git add <冲突文件>
# 继续变基
git rebase --continue
rebase
完成后,切换到 master
分支并合并 dev
:
git checkout master
git merge dev
使用 --abort
中止合并
如果在合并过程中遇到问题,想要中止合并,可以使用以下命令撤销当前合并操作:
git merge --abort
8. 最后检查
查看合并后的状态,确保所有冲突都已解决,并且合并结果符合预期:
git status