在日常开发中,经常需要将其他分支(如 B)上的 某几个特定提交 合并到当前分支(如 A),但不希望合并整个分支。这种情况最合适的方式是使用 git cherry-pick​。


✅ 适用场景

  • 当前分支是 A

  • 希望从 B 分支拿到部分 commit(例如 c1​, c2​, c5​)

  • 不希望 merge B 分支,不希望带来全部提交


📝 基本步骤

1. 切换到 A 分支

git checkout A

2. 查看 B 分支提交日志

git log B --oneline

示例输出:

abc123  修复登录Bug
def456  优化接口性能
789abc  添加统计功能

🎯 挑选特定提交(最常用)

例如只需要 abc123​ 和 789abc​:

git cherry-pick abc123
git cherry-pick 789abc

📦 批量挑选连续的多个提交

方式一:包含 start 到 end(两者都包含)

git cherry-pick start_commit^..end_commit

方式二:包含两个提交

git cherry-pick start_commit..end_commit

示例:

git cherry-pick abc123^..def456

⚠️ 注意事项

1. cherry-pick 会生成新的提交 hash

它不会保留原分支的提交关系,也不会 merge 整条分支。

2. 发生冲突时处理方式

解决冲突后:

git add .
git cherry-pick --continue

3. 取消当前 cherry-pick

git cherry-pick --abort