ディフチルマニュアル言う、中diff3 -A mine older yours
'--show-all' ('-A') オプションは、衝突を角かっこで囲み、マージされていない変更だけでなく、 から
older
までのすべての変更を出力することを除けば、 '-e' オプションと同様に機能します。yours
3つのファイルがあり、各ファイルには4行の数字があります。
$ paste f1 f2 f3
0 0 1
2 1 2
2 3 3
4 5 6
マージされた変更がないため、両方ともマージされていない変更のみを出力する必要があります-A
か-e
?
-A
による次のようなさまざまな出力をどのように理解しますか-e
?ed
を理解するには知識が不足しているようです-A
。たとえば、このコマンドが出力の最後で何をしているのかわかりません-A
。通常、a
コマンドの後に追加する行が表示されますが、コマンドの後には行がないようです。
0a
<<<<<<< f1
.
ありがとうございます。
f2
からの変更のうち、マージされていないf3
変更は次のとおりです。
$ diff3 -e f1 f2 f3
1,4c
1
2
3
6
.
f2
からのすべての変更f3
(マージされていない変更とマージされた変更を含む)は次のとおりです。
$ diff3 -A f1 f2 f3
4a
||||||| f2
0
1
3
5
=======
1
2
3
6
>>>>>>> f3
.
0a
<<<<<<< f1
.
答え1
ed
diff3 -A
生成されたスクリプトをソースファイルに適用すると、実際に実行されている操作を確認できます。
$ diff3 -A f[123] >script.ed
(patch
ここで使用していますが、書き込むことができますが、バッファをファイルに書き換えたり()端末から印刷したい場合は()スクリプトのed
最後にコマンドを追加する必要があります。)w
%p
$ patch f1 script.ed
Hmm... Looks like an ed script to me...
Patching file f1 using Plan A...
done
$ cat f1
<<<<<<< f1
0
2
2
4
||||||| f2
0
1
3
5
=======
1
2
3
6
>>>>>>> f3
これはファイルのこのビットの編集を表します。みんなこの特定の例では、ファイル)が競合です(<<<<<<<
および間に「同封」されています>>>>>>>
)。 (「My Files」)の内容とf1
(「Old Files」と「Your Files」のそれぞれ)の内容を提供して、競合が何であるかを示します。f2
f3
このコンテンツと生成されたコンテンツの違いは、生成されたスクリプトが可能な競合を無視してに変換されることdiff3 -e
です。ed
diff3 -e
f1
f3
f2
$ diff3 -e f[123] >script.ed
$ patch f1 script.ed
Hmm... Looks like an ed script to me...
Patching file f1 using Plan A...
done
$ cat f1
1
2
3
6
したがって、マニュアルに「衝突が含まれています」と書かれている場合、diffをパッチとして適用すると、対応する競合マークが結果ファイルに挿入されます。
その瞬間まで違いを読む、知らないと少し難しいですed
。
4a
||||||| f2
0
1
3
5
=======
1
2
3
6
>>>>>>> f3
.
0a
<<<<<<< f1
.
あなたのコメントの最後の部分は
0a
<<<<<<< f1
.
<<<<<<< f1
編集中のファイルの上部にテキスト行を挿入します。これにより、diff自体にf1
(パッチされたファイルの)元の内容を含める必要がなくなります。