Git
日本語 ▾ トピック ▾ 最新バージョン ▾ 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

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

-k
--keep

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

--keep-non-patch

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

--[no-]keep-cr

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

-c
--scissors

scissors行より前の本文のすべてを削除します(git-mailinfo[1] を参照)。 mailinfo.scissors 設定変数を使用してデフォルトで有効にすることができます。

--no-scissors

scissors行を無視します(git-mailinfo[1] を参照)。

--quoted-cr=<action>

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

--empty=(drop|keep|stop)

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

drop

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

keep

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

stop

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

-m
--message-id

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

--no-message-id

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

-q
--quiet

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

-u
--utf8

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

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

--no-utf8

git mailinfo-n フラグを渡します(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 applygit-apply[1] を参照)プログラムに渡されます。

--whitespace オプションの有効な <action> は、nowarnwarnfixerror、および 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 rebase* と *git 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はパラメータ `--keep-cr` を指定してmbox形式のパッチに対してgit-mailsplitを呼び出します。この場合、git-mailsplitは `\r\n` で終わる行から `\r` を削除しません。コマンドラインから `--no-keep-cr` を指定することでオーバーライドできます。git-am[1]git-mailsplit[1]を参照してください。

am.threeWay

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

関連項目

GIT

git[1] スイートの一部

scroll-to-top