一、使用场景
选择性合并特定提交
Git Cherry-Pick 用于将某个分支上的单个或多个提交应用到当前分支。适用于只需要某个分支的部分改动而非全部合并的情况。比如修复 bug 时,可能只需要将修复的特定提交应用到其他分支。
跨分支代码复用
当多个分支需要相同的功能或修复,但合并整个分支不适用时,可以通过 Cherry-Pick 选择性地复用提交。这在长期维护多个版本分支时特别有用,比如将某个新功能从开发分支单独应用到稳定分支。
撤销特定更改
Cherry-Pick 可以配合 Revert 使用,选择性地撤销某些提交。相比 Git Revert 直接撤销整个合并提交,Cherry-Pick 允许更精细地控制要撤销的具体改动。
重构提交历史
在整理提交历史时,可能需要重新排列或重组提交。Cherry-Pick 可以将提交从一个分支提取到另一个分支,配合 Rebase 等操作实现更清晰的提交历史。
冲突解决测试
在正式合并分支前,可以用 Cherry-Pick 测试关键提交是否能顺利应用到目标分支。如果出现冲突,可以在小范围内提前解决,降低后续完整合并时的风险。
代码审查后调整
代码审查后可能需要调整某些提交。Cherry-Pick 允许将这些修改后的提交单独应用到主分支,而不必重新走完整合并流程。
部分回滚
当需要撤销某个特性但保留其他修改时,可以 Cherry-Pick 回滚该特性相关的特定提交,而不是回滚整个合并操作。这在复杂的分支结构中特别有用。
移植实验性功能
开发中的实验性功能可能存在于独立分支,当确定某个子功能可用时,可通过 Cherry-Pick 将其移植到主分支,而不必等待整个功能完成。
二、用法
1. 基本用法:挑选单个提交
功能:将指定提交的更改应用到当前分支。
命令格式:
git cherry-pick <commit-hash>
示例流程:
- 若发生冲突,需手动解决后执行
git cherry-pick --continue。 - 重点:仅复制更改内容,不保留原提交信息中的分支关联。
假设需将分支 feature 的提交 a1b2c3d 应用到当前分支 main:
git checkout main
git cherry-pick a1b2c3d
2. 挑选多个提交
功能:按顺序应用多个提交的更改。
命令格式:
git cherry-pick <commit-hash-1> <commit-hash-2>
或者使用范围:
git cherry-pick <start-commit>^..<end-commit>
注意:多个提交之间用空格分隔,或使用范围符号指定连续提交区间。

