跳到主要内容

17 解决合并冲突

本视频讲解了如何在 Git 中解决合并冲突的常见方法。以下是关于解决 Git 合并冲突的详细文档。

什么是合并冲突?

合并冲突是指在 Git 中,当两个分支的同一文件的同一部分被不同地修改时,Git 无法自动合并这些更改,从而需要人工干预来解决冲突。

合并冲突的常见场景

  1. 多人协作开发:多个开发者同时修改了同一文件的同一部分。
  2. 长期分支合并:长期未合并的分支可能会导致冲突。
  3. 代码重构:重构代码时可能会与其他分支的更改冲突。

如何解决合并冲突?

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")

3. 编辑冲突文件

打开冲突文件,Git 会标记冲突部分:

<<<<<<< HEAD
你的更改
=======
其他分支的更改
>>>>>>> branch-name

手动修改冲突部分,保留需要的内容。

vim README.md

4. 标记冲突已解决

修改完成后,标记冲突已解决:

git add <file-name>

5. 完成合并

最后,完成合并操作:

git commit

使用图形化工具解决冲突

除了命令行,您还可以使用图形化工具(如 VS Code、Sourcetree)来解决冲突。这些工具提供了直观的界面,方便查看和解决冲突。

最佳实践

  1. 频繁合并:定期将主分支的更改合并到开发分支,减少冲突概率。
  2. 小步提交:避免一次性提交大量更改。
  3. 沟通协作:团队成员之间保持良好的沟通,减少冲突风险。

通过以上方法,您可以高效地解决 Git 合并冲突,确保团队协作顺畅。