Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
diff / patch
『diff』は2つのファイルやディレクトリの差分を比較するコマンドです。『patch』は『diff』が出力した差分ファイル(パッチファイル)をファイルに適用します。バージョン管理やソフトウェアの更新に使われます。
構文
diff [オプション] ファイル1 ファイル2 patch [オプション] [元ファイル] [パッチファイル]
オプション一覧
| コマンド / オプション | 概要 |
|---|---|
| diff ファイル1 ファイル2 | 2ファイルの差分を表示します。「<」がファイル1、「>」がファイル2の行です。 |
| diff -u ファイル1 ファイル2 | ユニファイド形式(unified)で差分を表示します。git diff と同じ見た目です。 |
| diff -r ディレクトリ1 ディレクトリ2 | ディレクトリを再帰的に比較します。 |
| diff -i ファイル1 ファイル2 | 大文字小文字を無視して比較します。 |
| diff -b ファイル1 ファイル2 | 空白の数の違いを無視して比較します。 |
| diff -q ファイル1 ファイル2 | 差分があるかどうかだけを表示します(内容は表示しません)。 |
| diff -y ファイル1 ファイル2 | 2カラム並べて比較します。 |
| patch ファイル < パッチ | パッチファイルの差分をファイルに適用します。 |
| patch -R ファイル < パッチ | パッチを逆適用します(変更を元に戻します)。 |
| patch -p1 < パッチ | パッチファイルのパスから先頭1段のディレクトリ名を取り除いて適用します。 |
サンプルコード
以下のファイルを例に説明します。
# original.txt の内容: # line1 # line2 # line3 # modified.txt の内容: # line1 # line2 modified # line3 # line4 added
『diff -u』でユニファイド形式(git diff と同じ見た目)の差分を表示します。
diff -u original.txt modified.txt
--- original.txt 2026-03-05 10:00:00.000000000 +0900 +++ modified.txt 2026-03-05 10:01:00.000000000 +0900 @@ -1,3 +1,4 @@ line1 -line2 +line2 modified line3 +line4 added
差分をパッチファイルとして保存します。
diff -u original.txt modified.txt > changes.patch
パッチファイルを適用します。
patch original.txt < changes.patch
patching file original.txt
『-R』でパッチを逆適用して変更前に戻します。
patch -R original.txt < changes.patch
patching file original.txt
『-q』で差分の有無だけを確認します(スクリプトでの判定に使います)。
diff -q original.txt modified.txt
Files original.txt and modified.txt differ
『-r』でディレクトリを再帰的に比較します。
diff -r dir1/ dir2/
diff -r dir1/config.txt dir2/config.txt 1c1 < debug=false --- > debug=true Only in dir2/: newfile.txt
『-y』で2カラム並べて比較します。
diff -y original.txt modified.txt
line1 line1
line2 | line2 modified
line3 line3
> line4 added
概要
ユニファイド形式(-u)の出力は「-」が削除された行、「+」が追加された行です。git が内部で使う差分形式と同じです。現代のソフトウェア開発では diff/patch を直接使うことは少なく、git が内包するため意識せずに使っています。ただしサーバー上でのパッチ適用やコードレビューツールの出力を理解するために読める必要があります。
ファイルを比較してコピーする際は『cp』も参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。