5

git の競合について頭を悩ませようとしていますが、これら 2 つをマージすると競合が発生するのはなぜですか?

ブランチの file.txt master:

This is line number one

ブランチの file.txt feature:

This is line number one
This is line number two
4

1 に答える 1

9

通常、これによって競合が発生することはありません (ベース ファイルに 2 行目がないと仮定します)。ただし、この場合、file.txt をandに個別に追加しました(これが、ファイルが共通の祖先にない理由です)。マージされる 2 つのブランチにファイルが個別に追加され、それらが何らかの点で異なる場合、Git はそれを競合と見なします。masterfeature

これは、マージ後のファイルの状態を判断するために Git がベース コピーを必要とするためです。たとえば、ベース ファイルがあり、1 行しかないとしますその場合、Git は に行が追加されたことを認識するfeatureため、最終的なファイルには 2 行が含まれます。ただし、ベース ファイルに 2 行ある場合、Git は で行が削除されたことをmaster認識するため、最終的なファイルは 1 行になります。あなたの場合、ベースファイルがないため、Git はファイルのどのバージョンが「勝つ」べきかを知りません。

于 2015-06-16T15:05:19.327 に答える