🏠 首页 › 攻略 › Git cherry-pick是什么?只拿想要的某次提交

Git cherry-pick是什么?只拿想要的某次提交

cherry-pick让你从其他分支或历史中提取某一次特定提交,只复制那个改动的效果,而不需要合并整个分支。

你有没有遇到过这种情况:同事在一个分支上修了一个bug,你急需这个修复,但那个分支还有十个你不需要的新功能?

传统的git merge会把整个分支合并过来,不需要的东西也一起带过来了。这时候cherry-pick就派上用场了。

一句话定位

cherry-pick就是"只摘那颗樱桃"——从一堆提交里,精准挑出你想用的那一个,应用到当前分支。

它是什么

cherry-pick是Git的一个命令,用来把某次特定的提交(commit)应用到当前分支。

核心特点:

  • 只复制提交的内容(文件改动),不复制提交历史
  • 在当前分支生成一个新的提交,作者和时间都是你
  • 适合跨分支取用单个修复

怎么用

基础用法

# 从其他分支的提交中挑一个
git cherry-pick abc1234

abc1234是目标提交的哈希值(前7位就够了)。

实际场景

场景1:主分支有bug,develop分支已经修好了

# 切回主分支
git checkout main

# 找到develop分支的修复提交
git log develop --oneline | grep "fix: xxx"

# 挑过来
git cherry-pick def5678

场景2:你搞错了分支,在一个错误的分支上做了提交

# 记录这个提交的哈希
git log --oneline

# 切换到正确的分支
git checkout correct-branch

# 把那次提交搬过去
git cherry-pick aaa1111

场景3:一次挑多个提交

# 挑连续的多个提交(从旧到新)
git cherry-pick abc1234 def5678 ghi9012

注意事项

  • 冲突正常解决:如果当前分支和挑来的提交有冲突,像正常merge一样处理即可
  • 重复提交会警告:如果某个提交已经存在,Git会提示跳过,不会重复应用
  • 不要cherry-pick大范围分支:只挑小范围改动,大范围用merge更合适

和merge有什么区别

mergecherry-pick
范围整个分支单个或少数提交
历史保留完整分支历史在新分支上重建提交
适用功能分支整合跨分支取用修复

一句话:merge是"把整条河引进来",cherry-pick是"只舀一瓢水"。

总结

cherry-pick是Git里的小巧工具,适合精准取用某个修复或改动。不是替代merge的工具,而是它的补充——当你只需要其中一小部分时,它比merge干净得多。

下次遇到"只要那个修复,其他不要"的情况,试试cherry-pick吧。