用 cherry-pick 选择性的跨分支更新
本文主要说明 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放在前面。
例如:
1 | git cherry-pick |
以上。
补充说明
cherry-pick
不仅可以用在不同分支之间, 还可以用在同一个分支上。
不同分支的用法如上所述. 同一分支用法也是一样的, 同一分支使用情形:
比如说你在某一个向某个分支中添加了一个功能, 后来处于某种原因把它给删除了, 然而后来某一天你又要添加上这个功能了, 这时候就可以使用cherry-pick把添加那个功能的commit, 再重演一遍。