0

master誤ってブランチの代わりにいくつかの変更 (コミット C) を入れました。後で、この変更に基づいて他のブランチを作成しました (branch1およびbranch2)。Cここで、コミットによって導入された変更をすべてのブランチから削除したいと思います (そして、に移動しbranch-Cます)。出来ますか?

現在の状況:

A - B - C - D - - L - M - L - M master  
            |     \                     
            |       - N - O - P branch2                           
            \               
             - E - F - G        branch1 

望ましい状況:

         - C                    branch-C 
        /
    A - B - D - - L - M - L - M master  
            |     \                     
            |       - N - O - P branch2                           
            \               
             - E - F - G        branch1 
4

1 に答える 1

1

すべてのコミットはハッシュを介して親コミットのチェーン全体を参照するため、各ブランチをリベースする必要があります。

あなたは次のようなことをすることができます

for br in master branch1 branch2
do
  git rebase --onto B C "$br" 
done

git branch branch-C C

記述されたループは、競合がない場合にのみシームレスに機能します。一般的には、手動で実行することをお勧めします。

また、手作業で行う場合は、少し最適化することができます。例えば

git rebase --onto B D master
git rebase --onto Dnew D branch1
git rebase --onto Lnew L branch2

ここでDnew、とはそれぞれとLnewのリベースされたバージョンです。DL

免責事項:私はそれをテストしていません。最初にリポジトリのコピーでテストしてください。

于 2012-10-09T09:37:55.763 に答える