2017-12-19 21 views
3

私は間違ったブランチを分岐し、機能ブランチの代わりにコミットをマスタに移動したいと考えています。 feat2からリベースマスターと試みたが、私は取得していますコミットをマスタから独立したブランチに移動する

は基本的に私はこの

feat1   C - D - E 
      /
master A - B 
      \ 
feat2   F 

するために、この

feat2     F 
        /
feat1   C - D - E 
      /
master A - B 

から行ってみたい「現在のブランチを...最新のものです」コースFはCDEに依存しません

EDIT:rebaseを強制すると、feat2ではFだけでなく、マスターからのすべてのコミットがリベースされます(CDEF)。私が必要とするのは、rebaseにfeat1を「カット」するよう指示する方法です。

+0

は私が--ontoリベース考えるとチェリーピック基本的にあなたのオプションはここにあり、両方とも潜在的に良い選択肢です。 –

答えて

1

git rebase --ontoを使用してみてください:

git checkout feat2 
git rebase --onto E B 

これは、その親コミットBの上にEあるコミットFをリベースすると言います。これにより、feat2が希望どおりに表示され、FコミットがBのすぐ上に表示されます。

masterから新機能2ブランチfeat2newを分岐させるだろう、これを処理するもう一つの簡単な方法は、チェリーピックはFをコミットします。この後は、古いfeat2ブランチを削除することができますし、feat2feat2newの名前を変更:

git checkout master 
git checkout -b feat2new 
git cherry-pick <SHA-1 for commit F> 

は今feat2を削除、および名前の変更を行います。

git branch -d feat2 
git branch -m feat2new feat2 
+0

私は1つだけコミットしていたので、私はチェリーピックを使いましたが、より多くのコミットのためには、 - オンンは間違いなく正しい方法です。適切なコマンドは次のようになります:git rebase --onto master feat1 feat2 – a1an

関連する問題