2013-10-14 98 views
0

我有一個主分支,我試圖從主分支複製到新創建的分支。所有提交應該在新的分支中,除了特定的提交。如何將提交複製到master的新分支,除了特定的提交?

master: c1-c2-c3-c4-c5-c6-c7-c8-c9 
newbranch: c1-c2-c4-c5-c7-c8-c9 

如上所述,我想複製所有提交到newbranch提交除了說,c3和c6。

此外,我必須保持主分支不變,因爲它是。

我使用Git版本1.8.4

能否請你幫我在這種情況下?

感謝

+1

谷歌的櫻桃挑' – zerkms

回答

4

你可以使用cherry-pick從一個分支到另一個

複製提交假設c1c2等等都是每個提交的SHA-1,你可以做如下

C1-C2 -c4-c5-c7-c8-c9

git checkout -b newbranch 
git cherry-pick c1 
git cherry-pick c2 
git cherry-pick c4 
git cherry-pick c5 
git cherry-pick c7 
git cherry-pick c8 
git cherry-pick c9 

對於這個s在特定情況下,您可能更喜歡使用SmartGit等GUI界面,這將允許您用鼠標選擇每個提交,而無需處理SHA1。

另一種可能性是基於它們與master的距離來引用提交。

例如,您提交的c9可引用爲master~,c8master~2等。

另一種可能性是在創建一個分支提交其中master

git checkout -b newbranch master 

,然後使用git rebase -i這將創造一個新的分支,只有選定提交

git rebase -i HEAD~8 

的編輯器將打開。只是要保留和放棄你要放棄一個的提交,刪除其行

pick 9748201 c2 
pick 3b1c9d3 c4 
pick 408de72 c5 
pick eef6862 c7 
pick bffc3a9 c8 
pick 669920f c9 

然後保存,瞧,你的newbranch將是master一個副本,而不c3c6

+1

nte'櫻桃挑'也需要修訂範圍參數。將你的7個命令合併爲3 –

相關問題