0

git によって生成された競合解決ファイルでは、一般的なコードのみがマーカー ('<<<<<<< ours' - '>>>>>>> theirs') の外側に表示されるべきです - 正しいですか?!

ローカル バージョンに挿入したコメントを含む CSS ファイルがあり、競合が発生しました。このコメント セグメントはマーカーの外側にリストされています。

これは、通常のスタイルと diff3 スタイル (ベース セグメントを含む) の両方で発生します。

ビジュアルツール(私の場合はp4merge)を使用すると、上記のテキストセグメントはローカルでのみ表示され、ベースまたはリモートでは表示されません。

またチェック:

git checkout --theirs <file-name>
--> said segment not there

git checkout --ours <file-name>
--> said segment there

git checkout -m <file-name>
--> said segment outside markers

どうしたの?!

4

1 に答える 1

1

競合しているファイルの部分への「ローカルのみ」の変更はどの程度「近い」のですか?

「ローカルのみ」の変更があったファイルの部分の近くにテキストの競合がなく、ファイルのその部分が自動的にマージされた可能性があります。

たとえば、次のような README という名前のファイルでブランチ A を開始するとします。

README

foo

bar

次に、新しいブランチ B をフォークします。ブランチ B で、README を次のように変更します。

README

foo

baz

そしてそれをコミットします。ここでブランチ A に戻り、2 つの変更を加えてコミットすると、ブランチ A の README は次のようになります。

README

frotz

foo

qux

次に、B を A にマージします。これが得られます (diff3 競合スタイルを使用):

README

frotz

foo

<<<<<<< HEAD
qux
||||||| merged common ancestors
bar
=======
baz
>>>>>>> B

ご覧のとおり、git はファイルの最初の部分を自動マージしましたが、2 番目の部分でパントしました。

于 2012-05-20T21:58:04.723 に答える