2013-02-04 219 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,合并不会恢复那些提交。那些提交没有在主人身上归还,他们被彻底删除。重置不是回复。创建测试提交和测试场景很简单,试试吧。 –

相关问题