17 解决合并冲突
本视频讲解了如何在 Git 中解决合并冲突的常见方法。以下是关于解决 Git 合并冲突的详细文档。
什么是合并冲突?
合并冲突是指在 Git 中,当两个分支的同一文件的同一部分被不同地修改时,Git 无法自动合并这些更改,从而需要人工干预来解决冲突。
合并冲突的常见场景
- 多人协作开发:多个开发者同时修改了同一文件的同一部分。
- 长期分支合并:长期未合并的分支可能会导致冲突。
- 代码重构:重构代码时可能会与其他分支的更改冲突。
如何解决合并冲突?
1. 触发合并冲突
合并分支时可能会遇到冲突
git merge <branch-name>
testgit@zxzsk ~/test (main)> git merge nb
自动合并 README.md
冲突(内容):合并冲突于 README.md
自动合并失败,修正冲突然后提交修正的结果。
testgit@zxzsk ~/test (main|MERGING) [1]>
2. 查看冲突文件
Git 会提示冲突的文件,可以使用以下命令查看冲突状态:
git status
testgit@zxzsk ~/test (main|MERGING)> git status
位于分支 main
您的分支领先 'origin/main' 共 1 个提交。
(使用 "git push" 来发布您的本地提交)
您有尚未合并的路径。 (解决冲突并运行 "git commit") (使用 "git merge --abort" 终止合并)
未合并的路径: (使用 "git add <文件>..." 标记解决方案) 双方修改: README.md
尚未暂存以备提交的变更: (使用 "git add <文件>..." 更新要提交的内容) (使用 "git restore <文件>..." 丢弃工作区的改动) 修改: nb
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
您有尚未合并的路径。 (解决冲突并运行 "git commit") (使用 "git merge --abort" 终止合并)
未合并的路径: (使用 "git add <文件>..." 标记解决方案) 双方修改: README.md
尚未暂存以备提交的变更: (使用 "git add <文件>..." 更新要提交的内容) (使用 "git restore <文件>..." 丢弃工作区的改动) 修改: nb
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
3. 编辑冲突文件
打开冲突文件,Git 会标记冲突部分:
<<<<<<< HEAD
你的更改
=======
其他分支的更改
>>>>>>> branch-name
手动修改冲突部分,保留需要的内容。
vim README.md
4. 标记冲突已解决
修改完成后,标记冲突已解决:
git add <file-name>
5. 完成合并
最后,完成合并操作:
git commit
使用图形化工具解决冲突
除了命令行,您还可以使用图形化工具(如 VS Code、Sourcetree)来解决冲突。这些工具提供了直观的界面,方便查看和解决冲突。
最佳实践
- 频繁合并:定期将主分支的更改合并到开发分支,减少冲突概率。
- 小步提交:避免一次性提交大量更改。
- 沟通协作:团队成员之间保持良好的沟通,减少冲突风险。
通过以上方法,您可以高效地解决 Git 合并冲突,确保团队协作顺畅。