# 用 cherry-pick 选择性的跨分支更新 **Published by:** [DorokGo](https://paragraph.com/@dorokgo/) **Published on:** 2021-12-10 **URL:** https://paragraph.com/@dorokgo/cherry-pick ## Content 本文主要说明 Git 的 cherry-pick 功能。应用场景如果你的应用已经发布了一个版本2.0, 代码分支叫 release-2.0 , 现在正在开发3.0, 代码的分支叫 dev-3.0 。有一天产品说, 要把正在开发的某个特性提前上线, 也就是说要把 dev-3.0 分支上的某些更改移到 release-2.0 的版本上, 那么怎么办呢? 该 cherry-pick 上场了, cherry-pick 会重演某些 commit , 即把某些 commit 的更改重新执行一遍。解决方案那么上述问题的解决方案如下:首先,切换到dev-3.0分支,敲 git log 命令,查找需要合并的 commit 记录,比如 commitID:20c2f506d789bb9f041050dc2c1e954fa3fb6910 ;然后,切换到 release-2.0 分支,使用 git cherry-pick 20c2f506d789bb9f041050dc2c1e954fa3fb6910 命令,就把该条 commit 记录合并到了 release-2.0 分支,这只是在本地合并到了 release-2.0 分支;最后,git push 提交到 release-2.0 远程,至此,就把dev-3.0分支的这条 commit 所涉及的更改合并到了 release-2.0 分支。另外,多个 commit-hash 使用空格分割, commit-hash 最好按提交时间先后排列, 即最先提交的commit放在前面。 例如:git cherry-pick 20c2f506d789bb9f041050dc2c1e954fa3fb6910 2633961a16b0dda7b767b9264662223a2874dfa9 5d5929eafd1b03fd4e7b6aa15a6c571fbcb3ceb4 以上。补充说明cherry-pick 不仅可以用在不同分支之间, 还可以用在同一个分支上。 不同分支的用法如上所述. 同一分支用法也是一样的, 同一分支使用情形: 比如说你在某一个向某个分支中添加了一个功能, 后来处于某种原因把它给删除了, 然而后来某一天你又要添加上这个功能了, 这时候就可以使用cherry-pick把添加那个功能的commit, 再重演一遍。 ## Publication Information - [DorokGo](https://paragraph.com/@dorokgo/): Publication homepage - [All Posts](https://paragraph.com/@dorokgo/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@dorokgo): Subscribe to updates