kobapan@wiLiki
Login
Linux

Linux:diff&patch

いい感じにdiffをとる

$ diff -Ebt -U 0 変更前のファイル 変更後のファイル > パッチファイル名

オプションの「-u」はパッチファイルを、unified diff形式で出力。「-U NUM」はdiff 形式で前後 NUM (デフォルト: 3) 行を表示する。ファイル名を記録してくれて、後でパッチを当てるさいにファイル名を指定しなくてよい。

-u, -U NUM, --unified[=NUM]   ユニファイド diff 形式で前後 NUM (デフォルト: 3) 行を表示する
-E, --ignore-tab-expansion      タブ展開によって発生する違いを無視する
-b, --ignore-space-change       スペース数により生じる違いを無視する
-t, --expand-tabs             出力時にタブをスペースに展開する

パッチの適用

$ patch -u [適用するファイル名] < パッチファイル名

オプションの「-u」はパッチファイルを、unified diff形式のパッチを適用するという意味。

「適用するファイル名」を省略した場合は、パッチファイルの先頭の行「--- ファイル名」のファイルにパッチが適用される。

パッチ適用を戻す(リバースパッチ)

$ patch -R [適用するファイル名] < パッチファイル名

間違ってパッチを適用してしまった場合など、patchコマンドにオプション「-R」を指定することでパッチ適用を戻すリバースパッチが出来る。

Debian
Emacs
Firefox
Gauche
JavaScript
Linux
Scheme
org-mode/latex

More ...