SYNOPSIS

git apply [--stat] [--numstat] [--summary] [--check] [--index | --intent-to-add] [--3way]
          [--apply] [--no-add] [--build-fake-ancestor=<file>] [-R | --reverse]
          [--allow-binary-replacement | --binary] [--reject] [-z]
          [-p<n>] [-C<n>] [--inaccurate-eof] [--recount] [--cached]
          [--ignore-space-change | --ignore-whitespace]
          [--whitespace=(nowarn|warn|fix|error|error-all)]
          [--exclude=<path>] [--include=<path>] [--directory=<root>]
          [--verbose | --quiet] [--unsafe-paths] [--allow-empty] [<patch>…]

DESCRIPTION

提供されたdiff出力(つまり「パッチ」)を読み取り、ファイルに適用します。 リポジトリ内のサブディレクトリから実行する場合、ディレクトリ外のパスへのパッチは無視されます。 --index オプションを使用すると、パッチはインデックスにも適用され、 --cached オプションを使用すると、パッチはインデックスにのみ適用されます。 これらのオプションがない場合、コマンドはパッチをファイルにのみ適用し、Gitリポジトリにいる必要はありません。

このコマンドはパッチを適用しますが、コミットは作成しません。 git-format-patch(1) によって生成されたパッチや、電子メールで受信されたパッチから、 git-am(1) を使用してコミットを作成します。

OPTIONS

<patch>…

パッチを読み取るファイル。 - は、標準入力から読み取るために使用できます。

--stat

パッチを適用する代わりに、入力に対してdiffstatを出力します。 ※applyはオフです(適用操作しません)。

--numstat

--stat に似ていますが、機械読み取り用に、追加および削除された行数を10進表記で表示し、パス名を省略形で表示します。 バイナリファイルの場合、 0 0 と言う代わりに2つの - を出力します。 ※applyはオフです(適用操作しません)。

--summary

パッチを適用する代わりに、ファイル作成、名前変更、モード変更など、git diff 拡張ヘッダーから取得した情報の要約を出力します。 ※applyはオフです(適用操作しません)。

--check

パッチを適用する代わりに、パッチが現在の作業ツリーやインデックスファイルに適用可能かどうかを確認し、エラーを検出します。 ※applyはオフです(適用操作しません)。

--index

パッチをインデックスと作業ツリーの両方に適用します(または、 --check が有効になっている場合は、両方に正しく適用されることをチェックします)。 注意: --index はインデックスエントリと関連するパスの作業木のコピーが同じであることを期待し(それらの内容とファイルモードなどのメタデータは一致する必要があります)、そうでない場合には、たとえパッチがインデックスと作業ツリーのそれぞれに単独できれいに適用されるとしても、エラーを発生させることに注意してください。

--cached

作業ツリーに触れることなく、インデックスのみにパッチを適用します。 --check が有効になっている場合は、インデックスエントリに正しく適用されることをチェックするだけです。

--intent-to-add

パッチを作業ツリーだけに適用する場合は、新規ファイルをマークして後でインデックスに追加します(git-add(1)--intent-to-add オプションを参照してください)。このオプションは、Git リポジトリ内で実行していて --index が指定されていない場合、無視されます。 なお、 --index--cached--3way などの他のオプションによって暗示される可能性があります。

-3
--3way

パッチが適用する予定のブロブのIDを記録していて、それらのブロブがローカルで利用可能である場合、3方向マージを試みます。作業ツリーのファイルに競合マーカーを残して、ユーザーが解決できるようにするかもしれません。 このオプションは、 --cached オプションが使用されていない限り、 --index オプションを意味し、 --reject オプションと互換性がありません。 また、 --reject オプションと互換性がありません。 --cached オプションと一緒に使用すると、競合があってもキャッシュの上位に残されます。

--build-fake-ancestor=<file>

新しい git diff 出力には、パッチが適用される元のバージョンを識別するのに役立つ各ブロブの「インデックス情報」が埋め込まれています。 このオプションが指定され、元のバージョンのブロブがローカルで使用可能な場合は、それらのブロブを含む一時的なインデックスを作成します。

純粋なモード変更(インデックス情報を持たない)に遭遇した場合、代わりに現在のインデックスから情報が読み取られます。

-R
--reverse

パッチを逆に適用します。

--reject

アトミックな場合、 git apply はデフォルトでパッチ全体に失敗し、一部のハンクが適用されない場合は作業ツリーにアクセスしません。 このオプションを使用すると、パッチの該当する部分が適用され、拒否されたハンクが対応する *.rej ファイルに残されます。

-z

--numstat が指定されている場合、パス名を変更せずに、NULで終了する機械可読形式を使用します。

このオプションがないと、構成変数 core.quotePath で説明されているように、「異常な」文字を含むパス名がクォートされます(git-config(1) 参照)。

-p<n>

<n>個の先頭のパスコンポーネント(スラッシュで区切られている)を従来のdiffパスから削除します。 たとえば、 -p2 を使用すると、 a/dir/file に対するパッチが file に直接適用されます。 デフォルトは1です。

-C<n>

各変更の前後で、周囲のコンテキストの少なくとも<n>行が一致することを確認してください。 周囲のコンテキストの行が少ない場合、それらはすべて一致する必要があります。 デフォルトでは、コンテキストが無視されることはありません。

--unidiff-zero

デフォルトでは、 git apply は、適用されるパッチが少なくとも1行のコンテキストを持つ統一された差分(unified diff)であることを想定しています。 これは優れた安全索を提供しますが、 --unified=0 で生成されたdiffを適用すると機能しなくなります。 これらのチェックをバイパスするには、 --unidiff-zero を使用します。

注意: 上記の理由により、文脈自由パッチ(context-free patches)の使用は推奨されないことに注意してください。

--apply

上記の「※applyはオフです(適用操作しません)」と記されたされたオプションのいずれかを使用すると、 git apply は、実際にパッチを適用せずに、要求された情報を読み取って出力します。 これらのフラグの後にこのフラグを付けると、パッチも適用します。

--no-add

パッチを適用するときは、パッチによる追加を無視してください。 これを使用して、最初に diff を実行し、このオプションを使用して結果を適用することにより、2つのファイル間の共通部分を抽出できます。これにより、削除部分は適用されますが、追加部分は適用されません。

--allow-binary-replacement
--binary

Gitの歴史上、ユーザーからの明示的な許可なしにバイナリパッチを適用することは許可されていませんでした。このフラグは、そのための方法でした。 現在、バイナリパッチの適用は常に許可されているため、これは何の操作も行いません(no-op)。

--exclude=<path-pattern>

与えられたパスパターンに一致するファイルに変更を適用しないでください。 これは、特定のファイルまたはディレクトリを除外するパッチセットをインポートするときに役立ちます。

--include=<path-pattern>

与えられたパスパターンに一致するファイルに変更を適用します。 これは、特定のファイルまたはディレクトリを含めるパッチセットをインポートするときに役立ちます。

--exclude および --include パターンが使用される場合、それらはコマンドラインに表示される順序で検査され、最初の一致によって各パスへのパッチが使用されるかどうかが決定されます。 どの include/exclude パターンにも一致しないパスへのパッチは、コマンドラインに include パターンがない場合は既定で使用され、includeパターンがある場合は無視されます。

--ignore-space-change
--ignore-whitespace

パッチを適用するときは、必要に応じてコンテキスト行の空白(whitespace)の変更を無視してください。 コンテキスト行は空白を保持し、--whitespace オプションの値に関係なく空白が修正されることはありません。 ただし、追加行はこのオプションに関わらず引き続き修正されます。

--whitespace=<action>

パッチを適用するときは、空白エラー(whitespace errors)のある新しい行または変更された行を検出してください。 何を空白エラーと見なすのかは、 core.whitespace 構成で制御します。 デフォルトでは、末尾の空白(空白のみで構成される行を含む)と、行の最初のインデント内で直後にタブ文字が続くスペース文字は、空白エラーと見なされます。

デフォルトでは、コマンドは警告メッセージを出力しますが、パッチを適用します。 git-apply が統計に使用され、パッチを適用しない場合、デフォルトで nowarn になります。

さまざまな <action> 値を使用して、この振る舞いを制御できます:

  • nowarn は、末尾の空白の警告をオフにします。

  • warn は、そのようないくつかのエラーに対する警告を出力しますが、パッチはそのまま適用します(デフォルト)。

  • fix は、そのようないくつかのエラーに対する警告を出力し、それらを修正した後にパッチを適用します(strip は同義語です — 末尾の空白文字のみをエラーと見なすために使用されるツールであり、fixにはstripが含まれますが、現在のGitはもっと多くのことをします)。

  • error は、そのようないくつかのエラーに対する警告を出力し、パッチの適用を拒否します。

  • error-allerror に似ていますが、すべてのエラーを表示します。

--inaccurate-eof

特定の状況下では、 diff の一部のバージョンは、ファイルの最後で欠落している改行を正しく検出しません。 その結果、そのような diff プログラムによって作成されたパッチは、不完全な行を正しく記録しません。 このオプションは、このバグを回避することにより、そのようなパッチを適用するためのサポートを追加します。

-v
--verbose

進捗状況をstderrに報告します。 デフォルトでは、現在適用されているパッチに関するメッセージのみが出力されます。 このオプションを使用すると、追加情報が報告されます。

-q
--quiet

stderr 出力を抑制します。 パッチのステータスや進行状況に関するメッセージは出力されません。

--recount

ハンクヘッダーの行数を信頼せず、パッチを調べて推測してください。 (たとえば、ハンクヘッダーを適切に調整せずにパッチを編集した後。)

--directory=<root>

すべてのファイル名の前に <root> を付けます。 -p 引数も渡された場合、 新しい <root> を前に付ける前に適用されます。

たとえば、 a/git-gui.shb/git-gui.sh に更新することについて説明しているパッチを作業ツリー modules/git-gui/git-gui.sh のファイルに適用できます。 `git apply --directory=modules/git-gui を実行します。

--unsafe-paths

デフォルトでは、作業領域(Git制御の作業ツリー、または git apply がGNUパッチの代わりに使用される場合の現在の作業ディレクトリ)の外側に影響を与えるパッチは、間違い(またはいたずら)として拒否されます。

git apply が「より良いGNUパッチ」として使用される場合、ユーザーは --unsafe-paths オプションを渡してこの安全性チェックをオーバーライドできます。 --index または --cached が使用されている場合、このオプションは効果がありません。

--allow-empty

diff を含まないパッチに対してエラーを返さないでください。 空のパッチやコミット・テキストのみのパッチもこの対象になります。

CONFIGURATION

このセクションの以下のすべては、 git-config(1) ドキュメントの抜粋です。 内容は git-config(1) ドキュメント にあるものと同一です:

apply.ignoreWhitespace

change に設定すると、 --ignore-space-change オプションと同じように、空白の変更を無視するように git apply に指示します。 no, none, never, false のいずれかに設定すると、すべての空白の違いを尊重するように git apply に指示されます。 git-apply(1) を参照してください。

apply.whitespace

--whitespace オプションと同じ方法で、 git apply に空白の処理方法を指示します。 git-apply(1) を参照してください。

SUBMODULES

パッチにサブモジュールへの変更が含まれている場合、 git apply はこれらの変更を以下のように扱います。

--index が(明示的または暗黙的に)指定されている場合、パッチを適用するには、サブモジュールのコミットがインデックスと正確に一致する必要があります。 サブモジュールのいずれかがチェックアウトされている場合、これらのチェックアウトは完全に無視されます。つまり、サブモジュールは最新またはクリーンである必要はなく、更新されません。

--index が指定されていない場合、パッチ内のサブモジュールのコミットは無視され、対応するサブディレクトリの有無のみがチェックされ、(可能であれば)更新されます。

SEE ALSO

GIT

Part of the git(1) suite