1

master ブランチにファイルがあるとします。

Hello World!

新しいブランチ A を作成し、同じファイルを次のように変更します。

Hello World!
and a little more

次に、マスター ブランチの同じファイルを変更します。

Hello World, the bug is fixed!

2 つのブランチを次のようにマージする方法はありますか。

Hello World, the bug is fixed!
and a little more

競合を解決する必要はありませんか?

ps: git はまったく新しいので、明らかなことを見逃す可能性があります。Netbeans を IDE として使用し、組み込みのマージ機能を使用しています。

4

2 に答える 2

3

2 つの変更によってコードの同じ部分が変更されると、競合が発生します。機械は文字通りのマージが有効かどうかを正確に知ることができないため、人間の関与なしに機械知能で自動的に解決することはできません。次の例を検討してください。

ベースバージョン:

char s[200];

最初の修正版:

char s[100]; // reduce array size

2 番目の変更されたバージョン:

char s[200];
s[199] = 0;

マージ ツールが提案どおりに動作する場合、結果は次のようになります。

char s[100]; // reduce array size
s[199] = 0;

明らかに、結果は間違っています。

したがって、マシンが競合を解決できるとは思わないでください。私たちプログラマーは、近い将来、この特権を持つことが保証されています:)

于 2012-09-28T20:35:09.577 に答える
2

対立はあいまいさから生じ、時には避けられません。meldのようなツールを使用して、マージの競合をすばやく解決し、苦痛を軽減してみてください。

また、マージを試みる前に、まず作業ブランチからリベースを実行してマスターから変更を取り込むことをお勧めします。簡単な早送りマージができるように、最初にブランチで競合をローカルに解決することをお勧めします。

于 2012-09-28T16:40:44.783 に答える