ファイル単位でパッチを作成するには、以下のコマンドをシェル上で実行する。$ diff -u test.c.orig test.c > mods.patchパッチを適用するには、以下のコマンドをシェル上で実行する。$ patch -p0 < mods.patchパッチファイル mods.patch 内にはパッチを適用すべきファイル名が書かれているためコマンド中に指定する必要がない。パッチを適用前の状態に戻すには '-R' オプションを使用する。$ patch -p0 -R < mods.patchdiff を適用したバージョン（上記test.c）とパッチを適用しようとしているバージョンが異なる場合、パッチは正しく適用できない。 例えば、パッチを適用しようとしているテキストの先頭に行が挿入されていると、パッチファイル内に書かれている行番号が一致しなくなる。 patch はパターンマッチングで修正する前後の行を特定するため、ある程度は変更に対処できる。また修正箇所近辺の内容が違っている場合も対処可能である（fuzz）。ただし、独自の修正を加えられたソースにパッチを適用して正しく動作するかは保証されない。
patch への入力となる diff ファイルは読み取り可能なテキストファイルであり、使う前に人間が中身を確かめることが容易である。より進んだ diff を使った場合、パッチ適用前に独自に修正されたファイルにもパッチを適用可能である（それらの修正が patch を妨げない限り）。これは例えばコンテキスト形式 (diff -c) やユニファイド形式 (diff -u) を使う場合である。これらの diff は変更箇所の前後の文脈（コンテキスト）も diff の一部として示す。patch はそれらの情報を使って、行番号がずれていてもパターンマッチングによってパッチ適用箇所を特定する（もちろん、最初は行番号を使ってパッチを適用しようと試みる）。コンテキスト形式やユニファイド形式は行番号に依存しないのでパッチに適している。ユニファイド形式は慣れていないと読みにくく、コンテキスト形式の方が分かりやすい。ただし、ユニファイド形式の方が非常にコンパクトになる。また、多くのオープンソースプロジェクトは「diff -u 変更前ファイル 変更後ファイル」で生成されたユニファイド形式のパッチを推奨している。diff プログラム以外にも diff 形式のファイルを生成するプログラムがある。ほとんどのバージョン管理システム（Git、Subversion、CVS、RCSなど）は対応している。バージョン管理システムでもパッチは重要な要素である。オープンソースの世界では、diff と patch を使って修正をやり取りするのが一般的である。あるフリーソフトウェアのソースを外部の者がダウンロードし、修正を加え、それを diff 形式でチームに送る。そうすると、チームメンバーはそれをパッチとして適用する前にレビューでき、外部の者がアクセスできるソースではなく、開発中の最新のソースにパッチを適用することで修正を取り込むことができる。
patchはプログラマの間でのやり取りのために作られ、ソースコードの更新のためによく用いられている。そのため、パッチソフトと言えばプログラムに使うものという先入観がある人が多いが、実際にはあらゆるテキストに適用可能である。パッチソフトは「当て布」という本来の語義に反して、テキストの追加のみでなく削除も行うことができる。なおpatchは、バイナリ形式のパッチを扱うプログラムではない。
patch を最初に作ったのは（後に Perl を開発した）ラリー・ウォールであり、彼はそれを1985年5月にmod.sources へポストした（後に comp.sources.unix となった）。このプログラムはGNUプロジェクトの一部となり、フリーソフトウェア財団が保守している。
1925年、ロシア系ユダヤ人のゼエブ・ウラジミール・ジャボチンスキーは、修正主義シオニズム連合（Union of Revisionist Zionists、Hatzohar）を設立した。修正主義シオニズムはヨルダン川両岸をユダヤ国家とする大イスラエル主義を掲げ、ヨーロッパから大量のユダヤ人移民を受け入れ、結果、必要となってくる防衛のためにユダヤ人軍事組織の結成を目標としていた。ジャボチンスキーは修正主義シオニズム連合設立の2年前、1923年にラトビアのリーガでベタル (BetarまたはBeitar)という青年運動組織を作っていた。ベタルは、1920年のテルハイにおけるアラブ人からの攻撃で命を失ったユダヤ人自衛のシンボルであるヨセフ・トルンペルドールの軍団という意味で、そのヘブライ語頭文字である。また2世紀のバル・コクバの乱で最後まで立っていた砦の名前でもある。名前の由来からもわかるようにベタルは戦闘活動を行っていた。彼らの多くはジャボチンスキーが後に結成した地下戦闘組織イルグンのメンバーとなった。
サブルーチンに制御が渡った点で、標準的には次のような処理を行う:_function:    push ebp       ;ベースポインタを保存    mov ebp, esp   ;現在のスタックフレームを指すようベースポインタを変更    sub esp, x     ;局所変数(Cでいう自動変数)の大きさの分スタックポインタを減らすこの結果、EBPはスタック上の引数の頭を指し、局所変数を格納する領域をスタック上に確保することができる。元のEBPの値はスタックに保存されている。このように局所変数は引数と同様にサブルーチン呼び出し毎にスタック上に確保されるので、再帰呼び出しが可能になる。このサブルーチンから抜け出す際は、次のシーケンスを実行する:    mov esp, ebp   ;局所変数を除去    pop ebp        ;ベースポインタを復帰    ret            ;サブルーチンから戻るこれはcdeclの例であって、Pascal 呼出規約では次のように引数データをサブルーチン側が掃除する。    ret n          ;nは引数データのバイト数次のC関数はint _cdecl MyFunction(int i) {     int k;    return i + k;}次のアセンブラコードと同等である。    ;エントリシーケンス    push ebp    mov ebp, esp    sub esp, 4     ;整数型変数kの領域に相当    ;関数のコード    mov eax, [ebp + 8]                    ;引数iを加算器（アキュムレータ）に移動    add eax, [ebp - 4]                   ;kをiに加える                   ;結果はEAX（加算器）に残る    ;終了シーケンス    mov esp, ebp    pop ebp    ret