Backup diff of UNIX/コマンド/テキスト処理/diff3 vs current(No. 2)


  • The added line is THIS COLOR.
  • The deleted line is THIS COLOR.
TITLE:diff3 - 3つのファイルの差異の表示
#navi(UNIX/コマンド)

diff3 コマンドは diff コマンドと違い、3つのファイル間の差異を表示します。
例えば、ある1つのファイルがあり、
自分がそのファイルに変更を加えたと同時に、他の人もそのファイルに変更を加えていた場合、その差異を表示、というより変更をマージするために使用します。

#contents
#contentsx

 % diff3 [自分のファイル] [変更前のファイル] [相手のファイル]
のように実行すると差異を表示できます。
 % diff3 -m [自分のファイル] [変更前のファイル] [相手のファイル]
のように実行すると、[変更前のファイル]から[相手のファイル]への変更を[自分のファイル]にマージした内容を表示できます。

例えばファイルの内容が以下のような場合、
|~自分のファイル|~変更前のファイル|~相手のファイル|
|#include<stdio.h>&br;main(){&br;&br;int a=5;&br;int b=5;&br;printf("%d\n",a-b);&br;}|#include<stdio.h>&br;main(){&br;&br;int a=2;&br;int b=5;&br;printf("%d\n",a-b);&br;}|#include<stdio.h>&br;void main(){&br;&br;int a=2;&br;int b=5;&br;printf("%d\n",a-b);&br;}|
|#include<stdio.h>&br;main(){&br;&br;int a=''5'';&br;int b=5;&br;printf("%d\n",a-b);&br;}|#include<stdio.h>&br;main(){&br;&br;int a=2;&br;int b=5;&br;printf("%d\n",a-b);&br;}|#include<stdio.h>&br;''void'' main(){&br;&br;int a=2;&br;int b=5;&br;printf("%d\n",a-b);&br;}|
 % diff3 -m [自分のファイル] [変更前のファイル] [相手のファイル]
では、
#pre
#pre(soft){{{
#include<stdio.h>
void main(){
''void'' main(){

        int a=5;
        int a=''5'';
        int b=5;
        printf("%d\n",a-b);
}
#pre(end)
}}}
のようにマージされた出力がでます。
もしもファイルの内容が以下のような場合、
|~自分のファイル|~変更前のファイル|~相手のファイル|
|#include<stdio.h>&br;int main(){&br;&br;int a=5;&br;int b=5;&br;printf("%d\n",a-b);&br;return 0;&br;}|#include<stdio.h>&br;main(){&br;&br;int a=2;&br;int b=5;&br;printf("%d\n",a-b);&br;}&br;&br;|#include<stdio.h>&br;void main(){&br;&br;int a=2;&br;int b=5;&br;printf("%d\n",a-b);&br;}&br;&br;|
#pre
|#include<stdio.h>&br;''int'' main(){&br;&br;int a=''5'';&br;int b=5;&br;printf("%d\n",a-b);&br;''return 0;''&br;}|#include<stdio.h>&br;main(){&br;&br;int a=2;&br;int b=5;&br;printf("%d\n",a-b);&br;}&br;&br;|#include<stdio.h>&br;''void'' main(){&br;&br;int a=2;&br;int b=5;&br;printf("%d\n",a-b);&br;}&br;&br;|
#pre(soft){{{
#include<stdio.h>
<<<<<<< [自分のファイル]
int main(){
||||||| [変更前のファイル]
main(){
=======
void main(){
>>>>>>> [相手のファイル]
''<<<<<<< [自分のファイル]''
''int main(){''
''||||||| [変更前のファイル]''
''main(){''
''=======''
''void main(){''
''>>>>>>> [相手のファイル]''

int a=5;
int b=5;
printf("%d\n",a-b);
return 0;
''return 0;''
}
#pre(end)
}}}
のように出力されます。
自分の変更箇所と相手の変更箇所が同じで衝突が起こった場合、
#pre
#pre{{{
<<<<<<< [自分のファイル]
lines from [自分のファイル]
||||||| [変更前のファイル]
lines from [変更前のファイル]
=======
lines from [相手のファイル]
>>>>>>> [相手のファイル]
#pre(end)
}}}
のような部分がでてきます。
こうなってしまった場合はしょうがないので手動で手直しする必要があります。

この衝突箇所があったかどうかは、grep '<<<<<<<' のようにしてとりあえずは調べられると思います。
この衝突箇所があったかどうかは、
 % grep '<<<<<<<'
のようにしてとりあえずは調べられると思います。

RIGHT:参考:[[Manpage of DIFF3>http://www.linux.or.jp/JM/html/gnumaniak/man1/diff3.1.html]]
written by s1080134
----
#vote2(役に立った,まあまあ,役に立たなかった,notimestamp)
役に立たなかった場合コメントをお願いします。
#areaedit
#comment(below)
#areaedit(end)
RIGHT:参考:[[Manpage of DIFF3>http://www.linux.or.jp/JM/html/gnumaniak/man1/diff3.1.html]]~
#navi(UNIX/コマンド,,footer)

xrea