自学教程 学编程从这里开始

git cherry-pick 冲突解决

✅ cherry-pick 冲突完整流程

# 1. 在当前分支执行拣选
git cherry-pick <commit-hash>

出现冲突后 Git 会暂停,提示:

You are currently cherry-picking commit xxx.
(fix conflicts and run “git cherry-pick –continue”)

2. 查看冲突文件

git status

冲突文件标记:both modified

冲突标记格式:

<<<<<<< HEAD         # 【ours】当前分支上的代码
这里是你当前分支的代码
=======              # 【theirs】正在 pick 的那次提交的改动
这里是要拣选过来的改动
>>>>>>> abc123...    # cherry-pick 的 commit

⚠️ 重点区分:cherry-pick 里 theirs = 你要拿过来的那个提交;ours = 当前分支

编辑文件,删掉 <<<<<<< ======= >>>>>>> 标记,改成最终正确代码。

3. 标记冲突解决

git add 冲突的文件

4. 继续 cherry-pick(生成新提交)

git cherry-pick --continue

然后会弹出编辑器,可以修改提交信息,保存退出就完成了


🚨 三个常用终止命令(很容易搞混)

# ① 放弃本次 cherry-pick,回退到 cherry-pick 之前干净状态(最常用)
git cherry-pick --abort

# ② 只跳过当前这个冲突提交,继续后面一批 pick(批量 cherry-pick 多个commit时用)
git cherry-pick --skip

# ③ 退出 cherry-pick 状态,但保留已经改好、add 的文件在工作区
git cherry-pick --quit

日常绝大多数情况:不想继续了就用 --abort

💡 快速单选(应急)

不想手动改,直接选一边(一定要确认业务没问题再用)

# 保留当前分支版本,舍弃 pick 的改动
git checkout --ours 文件名
git add 文件名

# 直接采用被 pick 的提交版本,覆盖当前分支
git checkout --theirs 文件名
git add 文件名

💡 小技巧

  • git cherry-pick -x <hash>:自动在提交备注带上 (cherry picked from commit xxx),方便追溯,线上bug修复推荐加 -x
  • git cherry-pick -n <hash>:只应用改动、不自动提交,适合自己调整完再提交
  • 如果是**合并提交(merge commit)**不能直接 cherry-pick,要加 -m 1 指定父节点

一句话流程总结

cherry-pick → 冲突 → 改文件删标记 → git add → git cherry-pick --continue;后悔就 --abort

标签:

0 条笔记