2017-08-28 6 views
0

私はマスターと開発ブランチを持っています。フィーチャーと修正プログラムのブランチはマージされて開発され、時には開発がマージされてマスターになります。今私は、マスターブランチから特定の修正プログラムを除外する要求があります。これは何とか可能ですか?それは比較的古い修正プログラムの枝であったので、それ以来私は開発に30以上のマージを持っています。または、私はちょうど新しいブランチを作成し、手動で変更を元に戻し、それをマスターにマージする必要がありますか?特定のマージされたブランチのコミットをGitのマスターブランチから除外する方法は?

+0

あなたが復帰シナリオで暮らすことができるなら、間違いなくそれを行うことができます。発生しなかったかのように元のコミットを取り除くことは確かに実行可能ですが、単に修正プログラムによって導入された変更を元に戻すよりもはるかに多くの作業になります。個人的に私は、修正プログラムのブランチ(またはブランチを削除した場合は最後のコミット)をチェックアウトして元に戻し、その新しいコミットを開発とマスターの両方にマージします。 –

+0

これは奇妙な要求です。あなたが永遠に(1人のユーザにとって一度だけではなく)それを元に戻したいのであれば、新しいコミットを変更して手動で変更を戻すだけです。これらのファイルの単純な差分/チェックアウトよりも少数のファイルに含まれている場合は、その前に修正プログラムが必要な場合があります。私はあなたがなぜこの要求を受け入れるのかを詳しく述べるべきだと思います。おそらく答えは他の場所です。 – kabanus

答えて

1

古いhotfixがマージされたコミットをdevelopブランチに戻すだけで済みます。

masterブランチで除外したい古い修正プログラムをコミットFからコミットするコミットがGであると仮定します。

あなたの master枝に古い hotfixを除外するための方法下記の使用を使用し
A---B------------------I---…  master 
    \    /
     C---D---E--…--H---…   develop 
      \  / \ 
      F--…--G  J--… hotfix/feature 

:まず

、マージを見つけるには、古いhotfixdevelopブランチにマージすることをコミットします。マージコミットとしてHが開発ブランチにあります。

その後、あなたのmasterブランチに変更を元に戻す:

git checkout master 
git revert -m 1 <commit id for H> 

注:マージされた変更を元に戻す際に競合がある場合は、あなたが変更と競合ファイルを保存し、あなたgit add .git revert --continueを終了することができます元に戻す。

関連する問題