✅ 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修复推荐加-xgit cherry-pick -n <hash>:只应用改动、不自动提交,适合自己调整完再提交- 如果是**合并提交(merge commit)**不能直接 cherry-pick,要加
-m 1指定父节点
一句话流程总结
cherry-pick → 冲突 → 改文件删标记 → git add → git cherry-pick --continue;后悔就 --abort
0 条笔记