分支篇-Day17|化解冲突:手动解决冲突,标记 <<<<====>>>>,重新提交

7 次阅读 2026-10-30 14:27

📖 知识点

1. 解决冲突的完整套路

① 打开冲突文件 → ② 找到 <<<<<<< ======= >>>>>>> 标记
→ ③ 决定保留哪个版本(或两者合并)
→ ④ 删掉所有冲突标记,只留正确代码
→ ⑤ git add → ⑥ git commit → 合并完成

 

2. 打开冲突文件

vim 订单模块.py

 

看到冲突标记:

def 价格():
<<<<<<< HEAD
    return 15元
=======
    return 20元
>>>>>>> 老李改动

 

3. 裁决:保留正确版本

假设老板说 "定价该听老李的 20 元",你手动编辑,删掉标记,只留:

def 价格():
    return 20元

 

关键是删掉 <<<<<<<、=======、>>>>>>> 三行标记,只留下最终正确的代码。

4. 重新提交完成合并

git add 订单模块.py          # 暂存裁决后的文件
git commit -m "合并: 解决订单价格冲突"   # 提交,合并完成

 

运行示例:

[master 8a9b0c1] 合并: 解决订单价格冲突

 

提交后合并就正式完成了,冲突解除。

5. 确认合并完成

git log --oneline

 

能看到 "合并" 提交,说明冲突已解决、两分支改动成功合二为一。

⚠️ 易错提醒

  1. 冲突标记 <<<<<<<、=======、>>>>>>> 必须删干净,否则代码有语法错误

  2. 只保留一个正确版本,或手动合并两者,别把标记也留下

  3. 冲突解决后要 git add + git commit,合并才算真正完成

⚔️ 剧情 Kata 实战任务

任务需求:

  1. 承接 Day16 的冲突现场(订单模块.py 里有冲突标记)

  2. 用 vim 打开,手动裁决:保留正确的价格

  3. 删掉所有冲突标记,只留正确代码

  4. 用 git add + git commit 重新提交,完成合并

  5. 用 cat 和 git log 验证冲突已化解

参考代码(在终端依次敲)

# 0. 进仓库(承接Day16的冲突现场)
cd ~/外卖App
git status                  # 看到 "both modified" 冲突状态

# 1. 打开冲突文件,手动裁决
vim 订单模块.py
#   把:
#   <<<<<<< HEAD
#       return 15元
#   =======
#       return 20元
#   >>>>>>> 老李改动
#   改成(假设保留老李的20元):
#   def 价格():
#       return 20元
#   (:wq 保存退出)

# 2. 确认冲突标记已删干净
cat 订单模块.py

# 3. 暂存并提交,完成合并
git add 订单模块.py
git commit -m "合并: 解决订单价格冲突"

# 4. 验证合并完成
git log --oneline

 

运行示例:

user@linux:~/外卖App$ cat 订单模块.py
def 价格():
    return 20元              # 冲突标记已删,只留正确版本

user@linux:~/外卖App$ git add 订单模块.py
user@linux:~/外卖App$ git commit -m "合并: 解决订单价格冲突"
[master 8a9b0c1] 合并: 解决订单价格冲突

user@linux:~/外卖App$ git log --oneline
8a9b0c1 合并: 解决订单价格冲突
a1b2c3d 小张改: 价格15元
...

 

💡 完成动作示意:

  1. git status 看到 "both modified"(双方都改了,冲突中)

  2. vim 打开,删掉 <<<<<<<、=======、>>>>>>>,保留 "20 元"

  3. git add + git commit -m "合并: 解决订单价格冲突"

  4. git log 看到合并提交 —— 冲突成功化解,两分支改动合二为一!

🧠 思考题

  1. 解决冲突的步骤是什么?为什么冲突标记必须删干净?

  2. 如果老板说 "价格取中间值 18 元",你该怎么做?(提示:手动把内容改成 18 元,删标记)