誰かが私のgitのコミットからチェリーピックをして、自分でコミットしたとき、私はどのようにマージしますか?
-
11-10-2019 - |
質問
誰かのgitリポジトリをフォークし、a、b、c、およびDをコミットするとします。彼はまた、彼自身のX、Y、Zをコミットさせます。したがって、この後、私のブランチにはABCDがあり、彼には「C」Xy Zがあります。両方のブランチが公開されていると仮定しているため、Rebaseは魅力的な選択肢ではありません。また、XYZがABC Dと競合しないと仮定します。これらの2つのブランチを有用な方法でマージするにはどうすればよいですか?単にマージして、手動ですべてを解決する必要がありますか?マージされたヘッドのログに重複したコミットメッセージについて私にできることはありますか?これらの2つの支店は、これからお互いのコミットをチェリーピッキングすることによってのみ同期する運命にありますか?
解決
まっすぐなマージが機能するはずです。 GITは、同一の変更セットに気付くはずであり、A/A 'またはc/c'をマージしようとしません。 x、y、またはzが「/c」が変更されたのと同じコードに触れた場合、特にBまたはDが同じコードに触れた場合、そこで競合を解決する必要がある場合があります。
あなたはいつでもできます git merge --no-commit
結果を調べて、それがあなたが期待したものであるかどうかを確認してください。
他のヒント
競合がない場合、まっすぐなマージは明らかです。競合がある場合...
最初に彼のc 'をマージすることができます。この段階での競合は、それらが自明でない場合、またはそれらが少し順不同であるため、あなた自身の変更を再適用することによるものです。あなたのCがBの上に蓄積し、彼のC 'がきれいなコピーではなかった場合、またはBCDが彼のAを再適用することで構築された場合に起こります。
詳細な紛争調査をスキップして、手動でバージョンを受け入れるか:
git merge --strategy=ours C'
次に、残りをマージし、そこでの紛争にもっと注意を払います。彼のXYZが実際にABCDのものに触れない場合、これは競合なしに行くはずです。彼がCをc 'とマージするときに奇妙または間違ったものを作って、c'をマージするときにそれを破棄した場合、それは戻って来て、ここまたは将来いつでも噛むことができます。