> 技术文档 > 手把手教你用Git解决代码冲突(附实战演示)_git解决冲突命令详细教程

手把手教你用Git解决代码冲突(附实战演示)_git解决冲突命令详细教程


文章目录

    • 一、遇到冲突时的症状表现
    • 二、超详细解决流程
      • 步骤1️⃣ 定位冲突文件
      • 步骤2️⃣ 打开冲突文件
      • 步骤3️⃣ 手动解决冲突
      • 步骤4️⃣ 标记为已解决
      • 步骤5️⃣ 完成合并
    • 三、实战演示案例
    • 四、高级技巧+避坑指南
      • 可视化工具推荐
      • 常见问题解答
    • 五、预防冲突的三大绝招
    • 六、延伸思考

一、遇到冲突时的症状表现

当你在终端看到这样的提示(重点看最后两行):

Auto-merging app.jsCONFLICT (content): Merge conflict in app.jsAutomatic merge failed; fix conflicts and then commit the result.

(敲黑板)这说明你的代码合并操作遇到了文件级冲突!!!此时千万不要慌,跟着老司机一步步操作就对了~

二、超详细解决流程

步骤1️⃣ 定位冲突文件

运行 git status 命令,你会看到类似这样的输出:

Unmerged paths: (use \"git add ...\" to mark resolution) both modified: app.js

(划重点)这里显示的both modified文件就是冲突文件,可能有多个文件需要处理

步骤2️⃣ 打开冲突文件

用VSCode或其他编辑器打开app.js,你会看到这样的标记:

<<<<<<< HEADconst version = \"v2.0\";=======const version = \"v1.5\";>>>>>>> feature/new-version

(核心解读):

  • <<<<<<< HEAD======= 之间是你当前分支的代码
  • =======>>>>>>> feature/new-version 是要合并进来的代码

步骤3️⃣ 手动解决冲突

(超级重要)必须删除所有冲突标记符!!!保留需要的代码。比如我们想要保留v2.0版本:

// 删除下面三行<<<<<<< HEADconst version = \"v2.0\";=======const version = \"v1.5\";>>>>>>> feature/new-version// 改为const version = \"v2.0\";

步骤4️⃣ 标记为已解决

处理完所有冲突文件后,执行:

git add app.js# 如果有多个文件,可以用 git add .

步骤5️⃣ 完成合并

git commit -m \"Merge feature/new-version and resolve conflicts\"

(注意)此时会自动生成合并提交记录

三、实战演示案例

假设小明和小红同时修改了同一个文件:

场景重现:

  1. 小明在main分支修改了第10行代码
  2. 小红在dev分支也修改了第10行代码
  3. 小红尝试合并main分支到dev分支

此时Git会拒绝自动合并,必须手动解决。解决方案:

  1. 对比两个人的修改内容
  2. 根据业务需求选择保留哪个版本
  3. 或者创造性地整合两个版本的代码

四、高级技巧+避坑指南

可视化工具推荐

  • VSCode自带的Git工具(强烈推荐新手使用)
  • GitKraken
  • Sourcetree

常见问题解答

Q:冲突文件在哪能找到?
A:直接看git status的输出,或者在项目根目录搜索<<<<<<<标记

Q:合并错了怎么撤销?
A:使用git merge --abort一键回到合并前的状态

Q:如何避免频繁冲突?
A:

  1. 开发前先pull最新代码
  2. 团队约定代码规范
  3. 使用功能分支开发
  4. 及时提交小颗粒度代码

五、预防冲突的三大绝招

  1. 分段提交法:完成一个小功能就立即提交,别攒着大改
  2. 沟通预警法:和队友同步修改范围,比如在群里喊一声\"我要改utils.js了!\"
  3. 分支隔离法:不同功能开不同分支,像这样:
    git checkout -b feature/logingit checkout -b feature/payment

(终极提示)遇到复杂冲突时,可以:

  1. 截图代码段发到工作群讨论
  2. 使用git diff对比差异
  3. 必要时直接语音沟通

六、延伸思考

当遇到上百个文件冲突时怎么办?(真实案例):

  1. 优先解决编译错误
  2. 使用git checkout --ours/--theirs批量选择版本
  3. 借助IDE的全局搜索替换功能
  4. 分模块逐步解决

最后送大家一句话:冲突不可怕,可怕的是没有版本控制的代码! 遇到冲突正说明你的团队在高效协作呀~

遇到其他Git疑难杂症?欢迎在评论区留言讨论!老司机在线解答~