セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ
デバッグ
メール
外部システム
サーバー管理
-
2.47.0
10/06/24
- 2.43.1 → 2.46.2 変更なし
-
2.43.0
11/20/23
- 2.40.1 → 2.42.3 変更なし
-
2.40.0
03/12/23
- 2.38.1 → 2.39.5 変更なし
-
2.38.0
10/02/22
- 2.35.1 → 2.37.7 変更なし
-
2.35.0
01/24/22
- 2.32.1 → 2.34.8 変更なし
-
2.32.0
06/06/21
- 2.29.1 → 2.31.8 変更なし
-
2.29.0
10/19/20
- 2.19.1 → 2.28.1 変更なし
-
2.19.0
09/10/18
- 2.18.1 → 2.18.5 変更なし
-
2.18.0
06/21/18
- 2.16.6 → 2.17.6 変更なし
-
2.15.4
12/06/19
- 2.14.6 変更なし
-
2.13.7
05/22/18
- 2.9.5 → 2.12.5 変更なし
-
2.8.6
07/30/17
- 2.5.6 → 2.7.6 変更なし
-
2.4.12
05/05/17
-
2.3.10
09/28/15
- 2.1.4 → 2.2.3 変更なし
-
2.0.5
12/17/14
概要
git apply [--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>…]
説明
与えられた diff 出力(つまり「パッチ」)を読み込み、ファイルを適用します。リポジトリ内のサブディレクトリから実行する場合、ディレクトリ外の修正されたパスは無視されます。--index
オプションを使用すると、パッチはインデックスにも適用され、--cached
オプションを使用すると、パッチはインデックスのみに適用されます。これらのオプションがない場合、コマンドはパッチをファイルのみに適用し、Git リポジトリにある必要はありません。
このコマンドはパッチを適用しますが、コミットは作成しません。git-am[1] を使用して、git-format-patch[1] で生成された、またはメールで受信したパッチからコミットを作成します。
オプション
- <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
が指定されていない場合に無視されます。--cached
や--3way
など、他のオプションによって--index
が暗黙的に指定される場合があります。 - -3
- --3way
-
パッチが適用されるはずのblobの識別情報を記録しており、それらのblobがローカルで利用可能な場合、3方向マージを試みます。ユーザーが解決できるように、作業ツリー内のファイルに競合マーカーを残す場合があります。このオプションは、
--cached
オプションが使用されていない限り、--index
オプションを意味し、--reject
オプションとは互換性がありません。--cached
オプションで使用した場合、競合はキャッシュの上位ステージに残ります。 - --ours
- --theirs
- --union
-
ファイルに競合を残す代わりに、行の私たちの(または彼らの、または両方の)側に有利に競合を解決します。--3wayが必要です。
- --build-fake-ancestor=<file>
-
新しいgit diff出力には、パッチが適用される元のバージョンを識別するために、各blobのインデックス情報が埋め込まれています。このフラグが与えられ、blobの元のバージョンがローカルで利用可能な場合、それらのblobを含む一時的なインデックスを構築します。
純粋なモード変更が発生した場合(インデックス情報がない場合)、情報は現在のインデックスから読み取られます。
- -R
- --reverse
-
パッチを逆順に適用します。
- --reject
-
アトミック性のために、git applyはデフォルトで、一部のハンクが適用されない場合、パッチ全体に失敗し、作業ツリーには触れません。このオプションにより、適用可能なパッチの部分を適用し、拒否されたハンクを対応する*.rejファイルに残すことができます。
- -z
-
--numstat
が指定されている場合、パス名を変更せず、NUL で区切られたマシン読み取り可能な形式を使用します。このオプションがない場合、「特殊な」文字を含むパス名は、設定変数
core.quotePath
について説明されているように引用符で囲まれます(git-config[1]を参照)。 - -p<n>
-
従来のdiffパスから先頭の<n>個のパスコンポーネント(スラッシュで区切られる)を削除します。たとえば、
-p2
を使用すると、a/dir/file
に対するパッチはfile
に直接適用されます。デフォルトは1です。 - -C<n>
-
各変更の前後にある周囲のコンテキストの行数を少なくとも<n>行一致させることを保証します。周囲のコンテキストの行数が少ない場合、すべて一致する必要があります。デフォルトでは、コンテキストは無視されません。
- --unidiff-zero
-
デフォルトで、git applyは、適用されているパッチが少なくとも1行のコンテキストを持つ統合diffであることを想定しています。これは優れた安全対策を提供しますが、
--unified=0
で生成されたdiffを適用すると機能しなくなります。これらのチェックを回避するには、--unidiff-zero
を使用します。上記で述べた理由から、コンテキストのないパッチの使用はお勧めしません。
- --apply
-
上記の「applyをオフにする」とマークされているオプションのいずれかを使用する場合は、git applyはパッチを実際に適用せずに、要求された情報を読み込んで出力します。これらのフラグの後にこのフラグを与えて、パッチも適用します。
- --no-add
-
パッチを適用する際に、パッチによって行われた追加を無視します。これは、最初にそれらに対してdiffを実行し、このオプションで結果を適用することで、2つのファイル間の共通部分を抽出するために使用できます。これは削除部分を適用しますが、追加部分を適用しません。
- --allow-binary-replacement
- --binary
-
歴史的には、ユーザーからの明示的な許可なしにバイナリパッチの適用を許可しておらず、このフラグはその方法でした。現在では、バイナリパッチの適用は常に許可されているため、これは無効です。
- --exclude=<path-pattern>
-
指定されたパスパターンに一致するファイルへの変更を適用しません。これは、特定のファイルやディレクトリを除外したい場合のパッチセットのインポートに役立ちます。
- --include=<path-pattern>
-
指定されたパスパターンに一致するファイルへの変更を適用します。これは、特定のファイルやディレクトリを含めたい場合のパッチセットのインポートに役立ちます。
--exclude
パターンと--include
パターンが使用される場合、コマンドラインに表示される順に検査され、最初のマッチが各パスのパッチの使用を決定します。コマンドラインにincludeパターンがない場合、いずれのinclude/excludeパターンにもマッチしないパスのパッチはデフォルトで使用され、includeパターンがある場合は無視されます。 - --ignore-space-change
- --ignore-whitespace
-
パッチ適用時に必要に応じてコンテキスト行の空白文字の変更を無視します。コンテキスト行は空白文字を保持し、
--whitespace
オプションの値に関係なく、空白文字の修正は行われません。ただし、新しい行は修正されます。 - --whitespace=<action>
-
パッチ適用時に、空白文字のエラーを含む新規または変更された行を検出します。空白文字エラーとみなされるものは、
core.whitespace
設定によって制御されます。デフォルトでは、末尾の空白文字(空白文字のみで構成される行を含む)と、行の先頭インデント内でタブ文字の直前にあるスペース文字が空白文字エラーとみなされます。デフォルトでは、コマンドは警告メッセージを出力しますが、パッチを適用します。
git-apply
が統計に使用され、パッチが適用されない場合、デフォルトでnowarn
になります。この動作を制御するために、異なる
<action>
値を使用できます。-
nowarn
は、末尾の空白文字の警告をオフにします。 -
warn
は、いくつかのそのようなエラーについて警告を出力しますが、パッチをそのまま適用します(デフォルト)。 -
fix
は、いくつかのそのようなエラーについて警告を出力し、修正後にパッチを適用します(strip
は同義語です。以前は末尾の空白文字のみをエラーとみなし、修正はそれらを削除すること(stripping)でしたが、最近のGitではより多くの処理が行われます)。 -
error
は、いくつかのそのようなエラーについて警告を出力し、パッチの適用を拒否します。 -
error-all
はerror
に似ていますが、すべてのエラーを表示します。
-
- --inaccurate-eof
-
特定の状況下では、一部のバージョンのdiffはファイル末尾の改行の欠落を正しく検出しません。その結果、そのようなdiffプログラムによって作成されたパッチは、不完全な行を正しく記録しません。このオプションは、このバグを回避することで、そのようなパッチの適用をサポートします。
- -v
- --verbose
-
標準エラー出力に進行状況を報告します。デフォルトでは、適用中の現在のパッチに関するメッセージのみが出力されます。このオプションを使用すると、追加情報が出力されます。
- -q
- --quiet
-
標準エラー出力の抑制。パッチの状態と進行状況に関するメッセージは出力されません。
- --recount
-
ハンクヘッダーの行数を信頼せず、パッチを検査して推測します(例:ハンクヘッダーを適切に調整せずにパッチを編集した後)。
- --directory=<root>
-
すべてのファイル名に<root>をプレフィックスとして追加します。"-p"引数も渡された場合、新しいルートを追加する前に適用されます。
たとえば、
a/git-gui.sh
をb/git-gui.sh
に更新するパッチは、git apply --directory=modules/git-gui
を実行することで、作業ツリーのmodules/git-gui/git-gui.sh
ファイルに適用できます。 - --unsafe-paths
-
デフォルトでは、作業領域の外側に影響を与えるパッチ(Gitで管理される作業ツリー、または「git apply」がGNU patchの代替として使用される場合の現在の作業ディレクトリ)は、間違い(または悪意のある行為)として拒否されます。
git apply
が「より良いGNU patch」として使用される場合、ユーザーはこの安全チェックを無効にするために--unsafe-paths
オプションを渡すことができます。このオプションは、--index
または--cached
が使用されている場合は効果がありません。 - --allow-empty
-
diffを含まないパッチに対してエラーを返しません。空のパッチとコミットテキストのみのパッチが含まれます。
設定
このセクションのこの行以下のすべては、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]を参照してください。
サブモジュール
パッチにサブモジュールの変更が含まれている場合、git applyはこれらの変更を次のように処理します。
--index
が指定されている場合(明示的または暗黙的)、パッチを適用するには、サブモジュールコミットがインデックスと完全に一致する必要があります。サブモジュールがチェックアウトされている場合、これらのチェックアウトは完全に無視されます。つまり、最新である必要はなく、クリーンである必要も、更新される必要もありません。
--index
が指定されていない場合、パッチ内のサブモジュールコミットは無視され、対応するサブディレクトリの存在または不在のみがチェックされ、(可能な場合)更新されます。
Git
git[1]スイートの一部