Git cherry-pick 使用總結

應用背景:假設如今有兩個分支: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)來提交改動了
 工作

相關文章
相關標籤/搜索