場景: 如果你的應(yīng)用已經(jīng)發(fā)布了一個(gè)版本2.0, 代碼分支叫release-2.0, 現(xiàn)在正在開發(fā)3.0, 代碼的分支叫dev-3.0. 那么有一天產(chǎn)品說, 要把正在開發(fā)的某個(gè)特性提前上線, 也就是說要把dev-3.0分支上的某些更改移到2.x的版本上, 那么怎么辦呢?
該cherry-pick上場了, cherry-pick會(huì)重演某些commit, 即把某些commit的更改重新執(zhí)行一遍. 那么上述問題的解決方案如下:
- 基于release-2.0分支新建分支release-2.1, 并且到新創(chuàng)建的分支上
git checkout -b release-2.1 release-2.0
- 將dev-3.0分支上的某些commit在release-2.1分支上重演
git cherry-pick dev-3.0分支的某些commit-hash
如:
git cherry-pick
20c2f506d789bb9f041050dc2c1e954fa3fb6910
2633961a16b0dda7b767b9264662223a2874dfa9
5d5929eafd1b03fd4e7b6aa15a6c571fbcb3ceb4
多個(gè)commit-hash使用空格分割, commit-hash最好按提交時(shí)間先后排列, 即最先提交的commit放在前面.
cherry-pick不僅可以用在不同分支之間, 還可以用在同一個(gè)分支上.
不同分支的用法如上所述. 同一分支用法也是一樣的, 同一分支使用情形:
比如說你在某一個(gè)向某個(gè)分支中添加了一個(gè)功能, 后來處于某種原因把它給刪除了,
然而后來某一天你又要添加上這個(gè)功能了, 這時(shí)候就可以使用cherry-pick把添加那個(gè)功能的commit, 再重演一遍.
======
想了解更多關(guān)于git的用法, 請移步這里Pro Git(en), Prop Git(zh)