git の競合について頭を悩ませようとしていますが、これら 2 つをマージすると競合が発生するのはなぜですか?
ブランチの file.txt master
:
This is line number one
ブランチの file.txt feature
:
This is line number one
This is line number two
git の競合について頭を悩ませようとしていますが、これら 2 つをマージすると競合が発生するのはなぜですか?
ブランチの file.txt master
:
This is line number one
ブランチの file.txt feature
:
This is line number one
This is line number two
通常、これによって競合が発生することはありません (ベース ファイルに 2 行目がないと仮定します)。ただし、この場合、file.txt をandに個別に追加しました(これが、ファイルが共通の祖先にない理由です)。マージされる 2 つのブランチにファイルが個別に追加され、それらが何らかの点で異なる場合、Git はそれを競合と見なします。master
feature
これは、マージ後のファイルの状態を判断するために Git がベース コピーを必要とするためです。たとえば、ベース ファイルがあり、1 行しかないとします。その場合、Git は に行が追加されたことを認識するfeature
ため、最終的なファイルには 2 行が含まれます。ただし、ベース ファイルに 2 行ある場合、Git は で行が削除されたことをmaster
認識するため、最終的なファイルは 1 行になります。あなたの場合、ベースファイルがないため、Git はファイルのどのバージョンが「勝つ」べきかを知りません。