应用背景:假设如今有两个分支:dev_01, dev_02. 若是我想把dev_01分支上的某几个commit合并到dev_02分支, 那么怎么办呢?git
这就是cherry-pick的工做了。cherry-pick会捡选某些commit, 即把某些commit的更改从新在另外一分支上从新提交一遍. 对于咱们的应用背景而言,就是把分支dev_01上某几个commit的更改在分支dev_02上再提交一遍。那么上述问题的解决方案以下:hash
假设咱们须要将dev_01上的两个commit 合并到dev_02上,两个commit的commit id 分别以下:it
20c2f506d789bb9f041050dc2c1e954fa3fb6910
2633961a16b0dda7b767b9264662223a2874dfa90
那咱们能够这样写:
git cherry-pick
20c2f506d789bb9f041050dc2c1e954fa3fb6910
2633961a16b0dda7b767b9264662223a2874dfa9
多个commit-hash使用空格分割, commit-hash最好按提交时间前后排列, 即最早提交的commit放在前面.时间
注意:上面这条cherry-pick命令每拣选一个commit就会提交一次生成一个新的commit id。 若是咱们想让每一个commit 拣选后暂缓提交,等到全部commit都拣选完成后,本身手动commit,应该怎么办呢?答案是用-n 选项:解决方案
git cherry-pick -n
20c2f506d789bb9f041050dc2c1e954fa3fb6910
2633961a16b0dda7b767b9264662223a2874dfa9
这样,当git cherry-up后,这两个commit上的更改就被merge到本地的dev_02分支了,此时这些更改就像是你再dev_02分支上本身手动添加的同样,注意此时这些更改并无被提交。
执行git status 会列出这些改动。co
此时,就能够按正常流程(git commit, git push)来提交改动了
工作