2013-02-04 258 views
17

具有兩個分支的存儲庫。Git:將特定提交移動到另一個分支

主分支提交:

C1,C2,C3,C4,C5,C6,C7,......,C15,...

分期分公司承諾:

C1,C2 ,C3,C4,C5,C6,C7

我希望將所有來自主分支提交後C7到分段分支

,然後恢復馬斯之三分支

git reset --hard c7-hash 

如何從一個分支移動/複製特定提交到另一個?

+3

在這種情況下,您不必移動提交,因爲可以快速轉發登臺分支掌握。 git checkout staging', 'git merge master', 'git checkout master', 'git reset --hard c7-hash' – tewe

+0

[如何將某些提交移動到git中的另一個分支?]( http://stackoverflow.com/questions/2369426/how-to-move-certain-commits-to-another-branch-in-git) – Kevin

+0

可能的重複[如何將最近的提交移動到一個新的分支用git?](http://stackoverflow.com/questions/1628563/how-can-i-move-recent-commits-to-a-new-branch-with-git) –

回答

35

在這種情況下你所描述,所有提交的臨時分支也都對主分支,它很容易:

git checkout staging 
git merge master 
git checkout master 
git reset --hard c7-hash 

合併將是一個快速前進。

在一般情況下,您可以使用git cherry-pick c8 c9 c10 c11 c12 c13 c14 c15櫻桃選擇單個提交到當前分支。櫻桃挑選所有在主分支但不是當前分支的提交的更簡單的方法是git cherry-pick ..master,並且還有其他示例git help cherry-pick

+0

做完這些之後,讓我們說你提交' x「給主分支。然後你將主人合併到分期中。這將合併到分期正確合併'x'到分期,而_not_恢復c8 ... c15在分期由於這些提交已被重置在主?在合併之後,要確保c8 ... c15保持暫存狀態。 –

+0

@MarcusLeon,合併不會恢復那些提交。那些提交沒有在主人身上歸還,他們被徹底刪除。重置不是回覆。創建測試提交和測試場景很簡單,試試吧。 –

相關問題