日本語 ▾ トピック ▾ 最新バージョン ▾ git-am は 2.46.0 で最終更新されました

名前

git-am - メールボックスから一連のパッチを適用する

書式

git am [--signoff] [--keep] [--[no-]keep-cr] [--[no-]utf8] [--no-verify]
	 [--[no-]3way] [--interactive] [--committer-date-is-author-date]
	 [--ignore-date] [--ignore-space-change | --ignore-whitespace]
	 [--whitespace=<action>] [-C<n>] [-p<n>] [--directory=<dir>]
	 [--exclude=<path>] [--include=<path>] [--reject] [-q | --quiet]
	 [--[no-]scissors] [-S[<keyid>]] [--patch-format=<format>]
	 [--quoted-cr=<action>]
	 [--empty=(stop|drop|keep)]
	 [(<mbox> | <Maildir>)…​]
git am (--continue | --skip | --abort | --quit | --retry | --show-current-patch[=(diff|raw)] | --allow-empty)

説明

メールボックス内のメールメッセージをコミットログメッセージ、著者情報、およびパッチに分割し、それらを現在のブランチに適用します。これは、マージのない直線的な履歴を持つブランチで実行されるgit-format-patch[1]の逆操作と考えることができます。

オプション

(<mbox>|<Maildir>)…​

パッチを読み込むメールボックスファイルのリスト。この引数を指定しない場合、コマンドは標準入力から読み込みます。ディレクトリを指定した場合、それらはMaildirとして扱われます。

-s
--signoff

Signed-off-by トレーラーをコミットメッセージに追加し、自身のコミッターIDを使用します。git-commit[1]の `signoff` オプションの詳細を参照してください。

-k
--keep

git mailinfo (詳細はgit-mailinfo[1]を参照) に -k フラグを渡します。

--keep-non-patch

git mailinfo (詳細はgit-mailinfo[1]を参照) に -b フラグを渡します。

--[no-]keep-cr

--keep-cr を指定すると、git mailsplit (詳細はgit-mailsplit[1]を参照) を同じオプションで呼び出し、行末のCRが削除されないようにします。am.keepcr 設定変数でデフォルトの動作を指定できます。--no-keep-cram.keepcr をオーバーライドするのに便利です。

-c
--scissors

シザーラインより前の本文をすべて削除します (詳細はgit-mailinfo[1]を参照)。mailinfo.scissors 設定変数を使用してデフォルトで有効にできます。

--no-scissors

シザーラインを無視します (詳細はgit-mailinfo[1]を参照)。

--quoted-cr=<action>

このフラグは git mailinfo (詳細はgit-mailinfo[1]を参照) に渡されます。

--empty=(drop|keep|stop)

パッチのないメールメッセージの処理方法

drop

メールメッセージはスキップされます。

keep

空のコミットが作成され、メールメッセージの内容がログとして使用されます。

stop

コマンドは失敗し、現在の am セッションの途中で停止します。これがデフォルトの動作です。

-m
--message-id

-m フラグを git mailinfo (詳細はgit-mailinfo[1]を参照) に渡し、Message-ID ヘッダーがコミットメッセージに追加されるようにします。am.messageid 設定変数でデフォルトの動作を指定できます。

--no-message-id

Message-ID ヘッダーをコミットメッセージに追加しません。no-message-idam.messageid をオーバーライドするのに便利です。

-q
--quiet

静かに実行します。エラーメッセージのみを出力します。

-u
--utf8

-u フラグを git mailinfo (詳細はgit-mailinfo[1]を参照) に渡します。メールから取得した提案されたコミットログメッセージはUTF-8エンコーディングに再エンコードされます (i18n.commitEncoding 設定変数を使用して、UTF-8でない場合にプロジェクトの優先エンコーディングを指定できます)。

これは以前のバージョンのGitではオプションでしたが、現在はデフォルトです。これをオーバーライドするには --no-utf8 を使用できます。

--no-utf8

-n フラグを git mailinfo (詳細はgit-mailinfo[1]を参照) に渡します。

-3
--3way
--no-3way

パッチがクリーンに適用されない場合、パッチが適用されるべきブロブのIDを記録しており、それらのブロブがローカルで利用可能な場合は、3ウェイマージにフォールバックします。--no-3way は `am.threeWay` 設定変数をオーバーライドするために使用できます。詳細については、git-config[1]の `am.threeWay` を参照してください。

--rerere-autoupdate
--no-rerere-autoupdate

rerereメカニズムが現在のコンフリクトに対する記録された解決策を再利用して作業ツリーのファイルを更新した後、その解決結果でインデックスも更新することを許可します。--no-rerere-autoupdate は、rerere が何をしたかを再確認し、別の git add で結果をインデックスにコミットする前に、潜在的なマージの誤りを検出するのに良い方法です。

--ignore-space-change
--ignore-whitespace
--whitespace=<action>
-C<n>
-p<n>
--directory=<dir>
--exclude=<path>
--include=<path>
--reject

これらのフラグは、パッチを適用する git apply プログラム (git-apply[1]を参照) に渡されます。

--whitespace オプションの有効な <action> は、nowarn, warn, fix, error, error-all です。

--patch-format

デフォルトでは、コマンドはパッチ形式を自動的に検出しようとします。このオプションを使用すると、自動検出をスキップし、パッチが解釈されるべきパッチ形式を指定できます。有効な形式は mbox, mboxrd, stgit, stgit-series, hg です。

-i
--interactive

対話的に実行します。

-n
--no-verify

デフォルトでは、pre-applypatch および applypatch-msg フックが実行されます。--no-verify または -n のいずれかが指定された場合、これらはバイパスされます。また、githooks[5]も参照してください。

--committer-date-is-author-date

デフォルトでは、コマンドはメールメッセージからの日付をコミット作者の日付として記録し、コミット作成時刻をコミッター日付として使用します。これにより、作者の日付と同じ値を使用することでコミッター日付をごまかすことができます。

--ignore-date

デフォルトでは、コマンドはメールメッセージからの日付をコミット作者の日付として記録し、コミット作成時刻をコミッター日付として使用します。これにより、コミッター日付と同じ値を使用することで作者日付をごまかすことができます。

--skip

現在のパッチをスキップします。これは、中断されたパッチを再開する場合にのみ意味があります。

-S[<keyid>]
--gpg-sign[=<keyid>]
--no-gpg-sign

GPG署名付きコミットを作成します。keyid 引数はオプションで、コミッターIDにデフォルト設定されます。指定された場合、スペースなしでオプションに付加する必要があります。--no-gpg-sign は、commit.gpgSign 設定変数と以前の --gpg-sign の両方を打ち消すのに役立ちます。

--continue
-r
--resolved

パッチの適用失敗 (例: 競合するパッチを適用しようとした場合) 後、ユーザーが手動で適用し、インデックスファイルに適用結果が保存されている場合。メールメッセージから抽出された著者情報とコミットログ、および現在のインデックスファイルを使用してコミットを作成し、続行します。

--resolvemsg=<msg>

パッチの適用失敗が発生した場合、終了する前に <msg> が画面に出力されます。これは、失敗を処理するために --continue または --skip を使用するよう促す標準メッセージをオーバーライドします。これは git rebasegit am 間の内部使用のみを目的としています。

--abort

元のブランチを復元し、パッチ適用操作を中止します。am操作に関与したファイルの内容をam前の状態に戻します。

--quit

パッチ適用操作を中止しますが、HEADとインデックスは変更しません。

--retry

最後の競合するパッチを再度適用しようとします。これは通常、再試行に追加オプション (例: --3way) を渡す場合にのみ役立ちます。そうでない場合、同じ失敗が再び発生するだけです。

--show-current-patch[=(diff|raw)]

git am が競合のために停止したメッセージを表示します。raw が指定された場合、メールメッセージの生のコンテンツを表示します。diff が指定された場合、差分部分のみを表示します。デフォルトは raw です。

--allow-empty

パッチのない入力メールメッセージでパッチ適用が失敗した後、メールメッセージの内容をログメッセージとして空のコミットを作成します。

解説

コミット作者名はメッセージの「From: 」行から、コミット作者日付はメッセージの「Date: 」行から取得されます。「Subject: 」行は、一般的なプレフィックス「[PATCH <anything>]」を削除した後、コミットのタイトルとして使用されます。「Subject: 」行は、コミットの内容を簡潔に1行のテキストで記述することを目的としています。

本文の先頭にある「From: 」、「Date: 」、「Subject: 」の各行は、ヘッダーから取得されたコミット作者名とタイトルの値を上書きします。

コミットメッセージは、「Subject: 」から取得されたタイトル、空行、およびパッチが始まるまでのメッセージ本文で構成されます。各行末の余分な空白は自動的に削除されます。

パッチはインラインであり、メッセージの直後に続くと想定されます。以下の形式の行は、

  • 3つのダッシュと行末、または

  • 「diff -」で始まる行、または

  • 「Index: 」で始まる行

はパッチの開始と見なされ、コミットログメッセージはそのような行の最初の出現の前に終了します。

最初に git am を呼び出す際、処理するメールボックスの名前を指定します。適用できない最初のパッチが見つかると、途中で中止されます。これには2つの方法で回復できます。

  1. --skip オプションを付けてコマンドを再実行することで、現在のパッチをスキップします。

  2. 作業ディレクトリで競合を手動で解決し、パッチが生成するべき状態にインデックスファイルを更新します。その後、--continue オプションを付けてコマンドを実行します。

現在の操作が完了するまで、このコマンドは新しいメールボックスの処理を拒否するため、最初からやり直す場合は、メールボックス名を指定してコマンドを実行する前に git am --abort を実行してください。

パッチが適用される前に、ORIG_HEAD は現在のブランチの先端に設定されます。これは、間違ったブランチで git am を実行した場合や、メールボックスを変更することで簡単に修正できるコミットのエラー (例: 「From:」行のエラー) など、複数のコミットで問題が発生した場合に役立ちます。

フック

このコマンドは applypatch-msgpre-applypatch、および post-applypatch フックを実行できます。詳細については、githooks[5]を参照してください。

設定

このセクションのこの行より下のすべては、git-config[1] ドキュメントから選択的に含まれています。内容はそちらにあるものと同じです。

am.keepcr

trueの場合、git-amはmbox形式のパッチに対して --keep-cr パラメータを指定してgit-mailsplitを呼び出します。この場合、git-mailsplitは \r\n で終わる行から \r を削除しません。コマンドラインから --no-keep-cr を指定することでオーバーライドできます。git-am[1]git-mailsplit[1]を参照してください。

am.threeWay

デフォルトでは、パッチがクリーンに適用されない場合、git am は失敗します。trueに設定すると、この設定は、パッチが適用されるべきブロブのIDを記録しており、それらのブロブがローカルで利用可能な場合、git am に3ウェイマージにフォールバックするよう指示します (コマンドラインから --3way オプションを指定するのと同等)。デフォルトは false です。git-am[1]を参照してください。

GIT

git[1] スイートの一部

scroll-to-top