誰かが私のgitのコミットからチェリーピックをして、自分でコミットしたとき、私はどのようにマージしますか?

StackOverflow https://stackoverflow.com/questions/4465710

質問

誰かの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'をマージするときにそれを破棄した場合、それは戻って来て、ここまたは将来いつでも噛むことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top