日本語 ▾ Topics ▾ Latest version ▾ git-am last updated in 2.50.0

NAME

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`を使用すると、'git mailsplit'(git-mailsplit[1]参照)を同じオプションで呼び出し、行末のCRが削除されないようにします。`am.keepcr`設定変数を使用してデフォルトの動作を指定できます。--no-keep-cr`は`am.keepcr`を上書きするのに役立ちます。

-c
--scissors

本文内のはさみ線より前のすべてを削除します(git-mailinfo[1]参照)。`mailinfo.scissors`設定変数を使用してデフォルトで有効にできます。

--no-scissors

はさみ線を無視します(git-mailinfo[1]参照)。

--quoted-cr=<アクション>

このフラグは’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-id`は`am.messageid`を上書きするのに役立ちます。

-q
--quiet

静かにします。エラーメッセージのみ表示します。

-u
--utf8

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

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

--no-utf8

'git mailinfo’に`-n`フラグを渡します(git-mailinfo[1]参照)。

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

パッチがきれいに適用されない場合、パッチが適用すべきblobのIDを記録していて、それらのblobがローカルで利用可能であれば、3方向マージにフォールバックします。`--no-3way`を使用してam.threeWay設定変数を上書きできます。詳細については、git-config[1]のam.threeWayを参照してください。

Warning

Missing ja/rerere-options.adoc

See original version for this content.

--ignore-space-change
--ignore-whitespace
--whitespace=<アクション>
-C<n>
-p<n>
--directory=<ディレクトリ>
--exclude=<パス>
--include=<パス>
--reject

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

--whitespace`オプションの有効な<アクション>は:`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[<キーID>]
--gpg-sign[=<キーID>]
--no-gpg-sign

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

--continue
-r
--resolved

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

--resolvemsg=<メッセージ>

パッチの失敗が発生した場合、終了する前に<メッセージ>が画面に表示されます。これは、失敗を処理するために`--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 <任意の文字列>]」を削除した後、コミットのタイトルとして使用されます。「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-msg`、pre-applypatch、および`post-applypatch`フックを実行できます。詳細についてはgithooks[5]を参照してください。

設定

このセクションのこの行以下は、 git-config[1] のドキュメントから抜粋して含まれています。内容は同ドキュメントにあるものと同じです:

Warning

Missing ja/config/am.adoc

See original version for this content.

GIT

Part of the git[1] suite

scroll-to-top