設定與配置
取得與建立專案
基本快照
分支與合併
分享與更新專案
檢查與比較
修補
偵錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.46.1 → 2.47.0 沒有變更
-
2.46.0
07/29/24
- 2.45.1 → 2.45.2 沒有變更
-
2.45.0
04/29/24
- 2.43.1 → 2.44.2 沒有變更
-
2.43.0
11/20/23
- 2.42.2 → 2.42.3 沒有變更
-
2.42.1
11/02/23
- 2.41.1 → 2.42.0 沒有變更
-
2.41.0
06/01/23
- 2.40.1 → 2.40.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.33.2 → 2.34.8 沒有變更
-
2.33.1
10/12/21
- 2.32.1 → 2.33.0 沒有變更
-
2.32.0
06/06/21
- 2.31.1 → 2.31.8 沒有變更
-
2.31.0
03/15/21
- 2.30.1 → 2.30.9 沒有變更
-
2.30.0
12/27/20
- 2.27.1 → 2.29.3 沒有變更
-
2.27.0
06/01/20
- 2.26.1 → 2.26.3 沒有變更
-
2.26.0
03/22/20
- 2.25.1 → 2.25.5 沒有變更
-
2.25.0
01/13/20
- 2.22.1 → 2.24.4 沒有變更
-
2.22.0
06/07/19
- 2.17.1 → 2.21.4 沒有變更
-
2.17.0
04/02/18
- 2.11.4 → 2.16.6 沒有變更
-
2.10.5
09/22/17
-
2.9.5
07/30/17
- 2.8.6 沒有變更
-
2.7.6
07/30/17
-
2.6.7
05/05/17
- 2.4.12 → 2.5.6 沒有變更
-
2.3.10
09/28/15
- 2.2.3 沒有變更
- 2.1.4 沒有變更
-
2.0.5
12/17/14
概要
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>)…
-
要從中讀取修補程式的郵件箱檔案清單。如果您不提供此參數,命令會從標準輸入讀取。如果您提供目錄,它們將被視為 Maildirs。
- -s
- --signoff
-
使用您自己的提交者身分,將
Signed-off-by
尾註新增至提交訊息。有關更多資訊,請參閱 git-commit[1] 中的 signoff 選項。 - -k
- --keep
-
將
-k
旗標傳遞給 git mailinfo(請參閱 git-mailinfo[1])。 - --keep-non-patch
-
將
-b
旗標傳遞給 git mailinfo(請參閱 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=<action>
-
此旗標將傳遞給 git mailinfo(請參閱 git-mailinfo[1])。
- --empty=(drop|keep|stop)
-
如何處理缺少修補程式的電子郵件訊息
- -m
- --message-id
-
將
-m
旗標傳遞給 git mailinfo(請參閱 git-mailinfo[1]),以便將 Message-ID 標頭新增至提交訊息。am.messageid
設定變數可用於指定預設行為。 - --no-message-id
-
不要將 Message-ID 標頭新增至提交訊息。
no-message-id
可用於覆寫am.messageid
。 - -q
- --quiet
-
保持安靜。僅列印錯誤訊息。
- -u
- --utf8
-
將
-u
旗標傳遞給 git mailinfo(請參閱 git-mailinfo[1])。從電子郵件取得的建議提交日誌訊息會重新編碼為 UTF-8 編碼(如果不是 UTF-8,則可以使用設定變數i18n.commitEncoding
來指定專案的慣用編碼)。這在先前的 git 版本中是可選的,但現在是預設值。您可以使用
--no-utf8
來覆寫此設定。 - --no-utf8
-
將
-n
旗標傳遞給 git mailinfo(請參閱 git-mailinfo[1])。 - -3
- --3way
- --no-3way
-
當修補程式無法乾淨地套用時,如果修補程式記錄了它應該套用的 blob 身分,並且我們在本地擁有這些 blob,則會回復為三向合併。
--no-3way
可用於覆寫 am.threeWay 設定變數。有關更多資訊,請參閱 git-config[1] 中的 am.threeWay。 - --rerere-autoupdate
- --no-rerere-autoupdate
-
在 rerere 機制在目前衝突中重複使用記錄的解決方案來更新工作樹中的檔案之後,允許它也使用解決方案的結果來更新索引。
--no-rerere-autoupdate
是一種在將結果使用單獨的git add
提交至索引之前,仔細檢查rerere
的執行結果並捕捉潛在錯誤合併的好方法。 - --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
引數是選用的,預設為提交者身分;如果指定,它必須與選項緊貼在一起,不能有空格。--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:」行應該用一行文字簡潔地描述提交的內容。
從正文開始的「From:」、「Date:」和「Subject:」行會覆蓋從標頭中取得的相應提交作者名稱和標題值。
提交訊息由從「Subject:」取得的標題、一個空行和訊息正文(直到修補程式開始的位置)組成。每行末尾的多餘空格會自動移除。
修補程式預期為內嵌,直接跟在訊息後面。以下形式的任何行
-
三個破折號和行尾,或
-
以「diff -」開頭的行,或
-
以「Index:」開頭的行
都被視為修補程式的開始,並且提交日誌訊息會在第一次出現此類行之前終止。
當最初呼叫 git am
時,您會提供要處理的信箱名稱。當看到第一個未套用的修補程式時,它會在中途中止。您可以透過以下兩種方式之一從中恢復
-
透過使用
--skip
選項重新執行命令來跳過目前的修補程式。 -
手動解決工作目錄中的衝突,並更新索引檔案使其進入修補程式應產生的狀態。然後使用
--continue
選項執行命令。
該命令拒絕處理新的信箱,直到目前的作業完成,因此如果您決定從頭開始,請在執行具有信箱名稱的命令之前執行 git am --abort
。
在套用任何修補程式之前,ORIG_HEAD 會設定為目前分支的頂端。如果您在多個提交時遇到問題,例如在錯誤的分支上執行 *git am* 或提交中的錯誤更容易透過變更信箱來修正(例如,「From:」行中的錯誤),這會很有用。
掛鉤
此命令可以執行 applypatch-msg
、pre-applypatch
和 post-applypatch
掛鉤。請參閱 githooks[5] 以取得更多資訊。
設定
此區段中此行以下的所有內容都是從 git-config[1] 文件中有選擇性地包含的。內容與那裡找到的內容相同
- am.keepcr
-
如果為 true,則 git-am 將針對 mbox 格式的修補程式呼叫 git-mailsplit 並帶有參數
--keep-cr
。在這種情況下,git-mailsplit 不會從以\r\n
結尾的行中移除\r
。可以透過從命令列給定--no-keep-cr
來覆蓋。請參閱 git-am[1]、git-mailsplit[1]。 - am.threeWay
-
預設情況下,如果修補程式無法乾淨地套用,
git am
將會失敗。當設定為 true 時,此設定會告訴git am
,如果修補程式記錄了它應該套用的 blob 的身分,並且我們在本地有這些 blob 可用,則會回退到 3 向合併(相當於從命令列給定--3way
選項)。預設為false
。請參閱 git-am[1]。
GIT
屬於 git[1] 套件的一部分