2013-02-04 18 views
17

Aブランチが2つあるリポジトリを持つ。Git:特定のコミットを別のブランチに移動する。

マスターブランチはコミット:

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

ステージング支店がコミット:

C1、C2を、C3、C4、C5、C6、C7

私は枝

のステージングにC7後にmasterブランチからすべてのコミットを移動してマスを元に戻したいですターブランチ

別のブランチからコピー/特定のコミットを移動する方法

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 help cherry-pick

+0

これを実行した後、 x 'をマスターブランチに送ります。そして、マスターをステージングにマージします。それがステージングに 'x'をステージングにマージして、ステージング中にc8 ... c15を元に戻すのではなく、それらのコミットがすでにマスタでリセットされているためにステージングにマージするでしょうか? c8 ... c15がそのマージの後にステージングにとどまるようにしたい。 –

+0

@MarcusLeon、これらのコミットを元に戻すことはできません。それらのコミットはマスターで元に戻りませんでしたが、完全に削除されました。リセットは復帰ではありません。そのようなテストコミットとテストシナリオを作成するのは簡単です。試してみてください。 –

関連する問題