git cherry-pick
七崽爱吃小饼干2026/05/27阅读 1
git cherry-pick 是 Git 中精准提取某一个/几个提交,并将其复制到当前分支的命令。
简单说:只把指定的 commit 搬到当前分支,不合并整个分支。
一、核心用法
1. 基础:提取单个提交
- 先找到要提取的提交哈希值(commit id,前7位即可)
bash
# 查看提交记录,复制需要的 commit id
git log
- 切换到目标分支(你要把提交搬过来的分支)
bash
git checkout 目标分支
- 执行 cherry-pick
bash
git cherry-pick <commit-id>
示例:
bash
# 把 abc1234 这个提交复制到当前分支
git cherry-pick abc1234
2. 进阶用法
提取连续多个提交
bash
# 提取 commit1 到 commit2 之间的所有提交(包含两端)
git cherry-pick commit1^..commit2
提取多个不连续提交
bash
git cherry-pick commit1 commit2 commit3
只保留修改,不自动提交
bash
git cherry-pick -n <commit-id>
# 或 --no-commit
git cherry-pick --no-commit <commit-id>
二、最常用场景
- 修复bug:A分支修复了bug,只想把这个修复提交同步到主分支
- 复用功能:只需要某个分支的单个功能提交,不合并全部分支
- 回滚错误提交:用 cherry-pick 恢复误删的提交
三、冲突处理(高频!)
cherry-pick 遇到代码冲突会暂停,提示:
Automatic cherry-pick failed
fix conflicts and then commit the result
解决步骤:
- 打开文件,手动解决冲突
- 标记冲突已解决
bash
git add .
- 继续执行 cherry-pick
bash
git cherry-pick --continue
中途放弃 cherry-pick
bash
git cherry-pick --abort
四、常用参数
| 参数 | 作用 |
|---|---|
-n / --no-commit | 只应用修改,不自动生成新提交 |
--continue | 解决冲突后继续执行 |
--abort | 取消操作,回退到执行前状态 |
-e / --edit | 编辑提交信息 |
-x | 记录原commit id(方便追溯来源) |
带来源记录的推荐用法:
bash
git cherry-pick -x <commit-id>
五、完整示例流程
- 从
dev分支复制fix-bug提交到main分支
bash
# 1. 查看 dev 分支的提交,复制 commit id
git checkout dev
git log
# 2. 切换到主分支
git checkout main
# 3. 精准复制提交
git cherry-pick -x a1b2c3d
总结
git cherry-pick <commit-id>:精准搬运单个提交- 冲突用
--continue继续,--abort放弃 - 推荐加
-x保留原提交记录,方便排查问题 - 适合只需要部分提交的场景,区别于
git merge(合并全部分支)