手把手教你用Git解决代码冲突(附实战演示)

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

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

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

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

二、超详细解决流程

步骤1️⃣ 定位冲突文件

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

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

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

步骤2️⃣ 打开冲突文件

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

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

(核心解读):

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

步骤3️⃣ 手动解决冲突

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

// 删除下面三行
<<<<<<< HEAD
const 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/login
    git checkout -b feature/payment
    

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

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

六、延伸思考

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值