SYNOPSIS
gitapply[--stat] [--numstat] [--summary] [--check] [--index|--intent-to-add] [--3way] [--ours|--theirs|--union] [--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進表記で表示し、パス名を省略形で表示します。 バイナリファイルの場合、00と言う代わりに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オプションと一緒に使用すると、競合があってもキャッシュの上位に残されます。 -
--ours -
--theirs -
--union -
ファイル内に競合を残すのではなく、 our (または their 、または両方)の側に有利な競合を解決します。
--3wayの指定が必要です。 -
--build-fake-ancestor=<file> -
新しい
gitdiff出力には、パッチが適用される元のバージョンを識別するのに役立つ各ブロブの「インデックス情報」が埋め込まれています。 このオプションが指定され、元のバージョンのブロブがローカルで使用可能な場合は、それらのブロブを含む一時的なインデックスを作成します。純粋なモード変更(インデックス情報を持たない)に遭遇した場合、代わりに現在のインデックスから情報が読み取られます。
-
-R -
--reverse -
パッチを逆に適用します。
-
--reject -
アトミックな場合、
gitapplyはデフォルトでパッチ全体に失敗し、一部のハンクが適用されない場合は作業ツリーにアクセスしません。 このオプションを使用すると、パッチの該当する部分が適用され、拒否されたハンクが、対応する *.rej ファイルに残されます。 -
-z -
--numstatが指定されている場合、パス名を変更せずに、NULで終了する機械可読形式を使用します。このオプションがないと、構成変数
core.quotePathで説明されているように、「異常な」文字を含むパス名がクォートされます(git-config(1) 参照)。 -
-p<n> -
<n>個の先頭の(スラッシュで区切られている)パスコンポーネントを伝統的なdiffパスから削除します。 たとえば、
-p2を使用すると、a/dir/fileに対するパッチがfileに直接適用されます。 デフォルトは1です。 -
-C<n> -
各変更の前後で、周囲のコンテキストの少なくとも<n>行が一致することを確認してください。 周囲のコンテキストの行が少ない場合、それらはすべて一致する必要があります。 デフォルトでは、コンテキストが無視されることはありません。
-
--unidiff-zero -
デフォルトでは、
gitapplyは、適用されるパッチが少なくとも1行のコンテキストを持つ統一された差分(unified diff)であることを想定しています。 これは優れた安全索を提供しますが、--unified=0で生成されたdiffを適用すると機能しなくなります。 これらのチェックをバイパスするには、--unidiff-zeroを使用します。注意: 上記の理由により、文脈自由パッチ(context-free patches)の使用は推奨されないことに注意してください。
-
--apply -
上記の「※applyはオフです(適用操作しません)」と記されたされたオプションのいずれかを使用すると、
gitapplyは、実際にパッチを適用せずに、要求された情報を読み取って出力します。 これらのフラグの後にこのフラグを付けると、パッチも適用します。 -
--no-add -
パッチを適用するときは、パッチによる追加を無視してください。 これを使用して、最初に
diffを実行し、このオプションを使用して結果を適用することにより、2つのファイル間の共通部分を抽出できます。これにより、削除部分は適用されますが、追加部分は適用されません。 -
--allow-binary-replacement -
--binary -
これまで、 ユーザーからの明示的な許可がない限りバイナリ・パッチの適用は許可されておらず、 このフラグはそのための手段でした。 現在、バイナリパッチの適用は常に許可されているため、これは何の操作も行いません(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-allはerrorに似ていますが、すべてのエラーを表示します。
-
-
--inaccurate-eof -
特定の状況下では、
diffの一部のバージョンは、ファイルの最後で欠落している改行を正しく検出しません。 その結果、そのようなdiffプログラムによって作成されたパッチは、不完全な行を正しく記録しません。 このオプションは、このバグを回避することにより、そのようなパッチを適用するためのサポートを追加します。 -
-v -
--verbose -
進捗状況をstderrに報告します。 デフォルトでは、現在適用されているパッチに関するメッセージのみが出力されます。 このオプションを使用すると、追加情報が報告されます。
-
-q -
--quiet -
stderr 出力を抑制します。 パッチのステータスや進行状況に関するメッセージは出力されません。
-
--recount -
ハンクヘッダーの行数を信頼せず、パッチを調べて推測してください。 (たとえば、ハンクヘッダーを適切に調整せずにパッチを編集した後。)
-
--directory=<root> -
すべてのファイル名の前に <root> を付けます。
-p引数も渡された場合、 新しい <root> を前に付ける前に適用されます。たとえば、
a/git-gui.shをb/git-gui.shに更新することについて説明しているパッチを作業ツリーmodules/git-gui/git-gui.shのファイルに適用できます。gitapply--directory=modules/git-guiを実行します。 -
--unsafe-paths -
デフォルトでは、作業領域(Git制御の作業ツリー、または
gitapplyがGNUパッチの代わりに使用される場合の現在の作業ディレクトリ)の外側に影響を与えるパッチは、間違い(またはいたずら)として拒否されます。gitapplyが「GNU patch よりマシなやつ」として使用される場合、ユーザーは--unsafe-pathsオプションを渡してこの安全性チェックをオーバーライドできます。--indexまたは--cachedが使用されている場合、このオプションは効果がありません。 -
--allow-empty -
diff を含まないパッチに対してエラーを返さないでください。 空のパッチやコミット・テキストのみのパッチもこの対象になります。
CONFIGURATION
このセクションの以下のすべては、 git-config(1) ドキュメントの抜粋です。 内容は git-config(1) ドキュメント にあるものと同一です:
- apply.ignoreWhitespace
-
値を
changeに設定すると、--ignore-space-changeオプションと同じように、空白の変更を無視するようにgitapplyに指示します。no,none,never,falseのいずれかに設定すると、すべての空白文字(whitespace)のdiffを尊重するようにgitapplyに指示します。 git-apply(1) を参照してください。 - apply.whitespace
-
--whitespaceオプションと同じ方法で、gitapplyに空白の処理方法を指示します。 git-apply(1) を参照してください。
SUBMODULES
パッチにサブモジュールへの変更が含まれている場合、 git apply はこれらの変更を以下のように扱います。
--index が(明示的または暗黙的に)指定されている場合、パッチを適用するには、サブモジュールのコミットがインデックスと正確に一致する必要があります。 サブモジュールのいずれかがチェックアウトされている場合、これらのチェックアウトは完全に無視されます。つまり、サブモジュールは最新またはクリーンである必要はなく、更新されません。
--index が指定されていない場合、パッチ内のサブモジュールのコミットは無視され、対応するサブディレクトリの有無のみがチェックされ、(可能であれば)更新されます。
SEE ALSO
GIT
Part of the git(1) suite