33

このエラーがいつ発生するかはわかりません。Google で説明が見つかりませんでした。

そのため、私の同僚は、branch1 でいくつかの新しいファイルと変更されたファイルをコミットしました。次に、これらの変更を取得してブランチ(branch2)にマージしましたが、git merge を使用せずに手動で比較を超えて使用しました(手動でマージするのは悪い習慣だとわかっています)。ただし、それらを手動でマージし、ブランチにも新しいファイルをコピーして貼り付けた後、ブランチ 2 で作業をコミットしました。しかし、今、彼らが git merge origin/branch2 を使用して私からいくつかの変更を取得しようとすると、最初に追加した新しいファイルで多くの git "add/add" 競合が発生します。

これらのファイルは同じなのに、git がこれらのファイルを競合と見なす理由を誰か教えてもらえますか? そして、これらの競合をどのように処理する必要がありますか?

4

2 に答える 2

47

ファイルが実際には同じではないため、 CONFLICT (add/add): Merge conflict in ... conflicts が表示されますdiffたとえば、次のコマンドを使用して違いを確認できます。

git diff branch1 branch2 -- path/to/file

branch1およびは、branch2比較するブランチの名前です。

または、違いを確認する簡単な方法は、競合状態にあるときに失敗した直後に、パラメーターなしgit mergeで実行するだけでgit diff、競合する領域が明らかになります。

このような競合を解決するには、正しいコンテンツを持つブランチを決定する必要があります。これを行うには、適切なブランチからファイルをチェックアウトします。次に例を示します。

git checkout name_of_branch path/to/file

適切なコンテンツが 2 つのファイルの混合である場合があります。その場合、git diff上記の例のように、おそらくコマンドを使用して違いを調べて、手動で解決する必要があります。

長期的な解決策は、異なるブランチの同じパスに競合する変更を加えないようにすることです。これは通常、共同作業者間のタスク共有/コミュニケーションの問題です。

于 2013-10-20T08:49:29.570 に答える