質問

ファイルとあなたのファイルが古い子孫であると仮定します。

file_mine =

abc
def
ghi

file_old =

abc
jkl
ghi

file_yours =

abc
def
ghi

指示 diff3 -m MIND OLD YOURS 与える:

abc
<<<<<<< OLD
jkl
=======
def
>>>>>>> YOURS
ghi

diff3はその私のものを解決することができず、あなたのものは同じ変更を加えました。

なんで?そして、この問題を解決する方法はありますか?

これであなたの脳をくすぐる:

diff OLD MINDdiff OLD YOURS 出力に同一の塊があります。

2c2
< jkl
---
> def

これらの塊は、三者合併中に「キャンセル」してはいけませんか?

役に立ちましたか?

解決

何があると思っていましたか?

として diff3ユーティリティを説明する記事 言う:

...これ(マージ) 真実ではありません 3つの入力ファイルすべてが異なる場合 古いだけが異なる場合;これをaと呼びます 対立. 。 3つの入力ファイルがすべて異なる場合、競合をと呼びます オーバーラップ

したがって、あなたが説明したケースは紛争として扱われます。 'なぜそうなのか?'あなたは尋ねるかもしれません。 diff3アルゴリズムのため。説明あなたは同じページで見つけることができます:

これを(マージ)減算と考えることができます 古い から あなたの 結果を追加します 私の, 、または私のものに合流するように、あなたのものに変わる変化

変更が行われている適切なコンテキストがないため、違いを適切に解決することはできません。

他のアプローチを使用して動作するはずだと言ったら、私はあなたに同意します。しかし...それはそれが何であるかです。 diff3は完璧ではありません。で説明されているように、他のツールを使用したい場合は、他のツールを使用することをお勧めします。 記事

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top