G---H // Release Branch
/
/
A---B---E---F--- // master
\
\
C---D--- // bug fix branch
私たちのプロジェクトの特別なニーズに基づいて、上記のシナリオが発生するのは非常に一般的です。私たちはmaster/devブランチをコミットしています。次に、バグレポートを取得し、バグブランチ上で修正を開始します(上記のCとDをコミットします)。その間にdevブランチでより多くのコミットが発生します。次に、上記のコミットB、E、Fによって導入された変更を含めることができない顧客用のリリースを作成する必要があると言われますが、バグ修正が含まれている必要があります。Git:ブランチで行われた変更のみをマージする
だから我々はこれまでに適用された変更Bの前にDEVの分岐が、あまりにもこのリリースブランチにバグ修正を取得するための最良の方法は何ですか?ブランチのマージを実行すると、Bで行った変更が含まれますが、これは不要です。私は、コミットCとDのチェリーピックを行うことができますが、私のレポは、その後のようになりますので、私はチェリー・ピッキングは基本的に常に良いアイデアbased on this answerではないことを読む:だからC「およびD」
G---H---C'---D'--- // Release Branch
/
/
A---B---E---F--- // master
\
\
C---D--- // bug fix branch
として完全に表示されますCとDと異なるsha-1 IDを持つ新しいコミット。これは本当に悪いことですか?これはどのような問題につながりますか?バグ修正ブランチからリリースブランチへの変更を得る良い方法はありますか?
リリースブランチをマスターに戻してマージするとどうなりますか?私が作ったダイアグラムでは、Hの変更は最終的にマスターブランチに適用する必要があります。 – DaveJohnston
バグ修正ブランチをマスターにマージしないと問題はありません。これを行うと、そうでない場合よりも多くの競合が発生する可能性があります(両方のブランチが同じ方法でコードの部分を変更し、さらにその上にいくつかの異なる変更を加えた場合)。 「危険な」という言葉は実際には過剰です。つまり、複数の競合を手動で修正する必要があり、2つのコミットが(異なるコミットIDを使用して)履歴に2回表示されるということです。 –