非常教程

Git参考手册

电子邮件 | Email

git am

名称

git-am - 从邮箱应用一系列修补程序

概要

git am [--signoff] [--keep] [--[no-]keep-cr] [--[no-]utf8]
         [--[no-]3way] [--interactive] [--committer-date-is-author-date]
         [--ignore-date] [--ignore-space-change | --ignore-whitespace]
         [--whitespace=<option>] [-C<n>] [-p<n>] [--directory=<dir>]
         [--exclude=<path>] [--include=<path>] [--reject] [-q | --quiet]
         [--[no-]scissors] [-S[<keyid>]] [--patch-format=<format>]
         [(<mbox> | <Maildir>)…​]
git am (--continue | --skip | --abort)

描述

将邮箱中的邮件拆分为提交日志消息、作者信息和补丁,并将其应用到当前分支。

Options

(<mbox>|<Maildir>)…​

要从中读取补丁的邮箱文件列表。如果您不提供此参数,则该命令会从标准输入中读取。如果你提供目录,他们将被视为邮件。

-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])。

-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编码(i18n.commitencoding如果不是 UTF-8,配置变量可用于指定项目的首选编码)。

这在以前版本的 git 中是可选的,但现在它是默认的。您可以使用--no-utf8来覆盖此。

--no-utf8

-n标志传递给git mailinfo(参见 git-mailinfo [1])。

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

如果修补程序不能干净地应用,如果修补程序记录它应该应用于的斑点的标识,则会退回到3路合并,并且我们在本地提供这些斑点。--no-3way可以用来覆盖 am.threeWay 配置变量。有关更多信息,请参阅g it-config [1]中的 am.threeWay。

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

这些标志被传递给git apply应用该补丁的(参见 git-apply [1])程序。

--patch-format

默认情况下,该命令将尝试自动检测补丁格式。此选项允许用户绕过自动检测并指定补丁应被解释为的补丁格式。有效的格式是 mbox,mboxrd,stgit,stgit-series 和 hg。

-i --interactive

以交互方式运行。

--committer-date-is-author-date

默认情况下,命令将来自电子邮件的日期记录为落实作者日期,并使用提交创建时间作为提交者日期。这允许用户通过使用与作者日期相同的值来说谎提交者日期。

--ignore-date

默认情况下,命令将来自电子邮件的日期记录为落实作者日期,并使用提交创建时间作为提交者日期。这允许用户通过使用与提交者日期相同的值来说谎作者日期。

--skip

跳过当前的补丁。这仅在重新启动中止的修补程序时才有意义。

-S<keyid> --gpg-sign=<keyid>

GPG标志的提交。keyid参数是可选的,并且默认为提交者身份; 如果指定,它必须粘贴到选项没有空格。

--continue -r --resolved

修补程序失败后(例如尝试应用冲突修补程序),用户已手动应用它,并且索引文件存储应用程序的结果。使用作者身份并提交从电子邮件和当前索引文件提取的日志进行提交,然后继续。

--resolvemsg=<msg>

发生修补程序失败时,<msg>将在退出之前打印到屏幕上。这将覆盖标准消息,通知您使用--continue--skip处理失败。这仅适用于git rebasegit am之间的内部使用。

--abort

恢复原始分支并中止修补操作。

讨论

提交作者姓名取自邮件的“From:”行,并且提交作者日期取自邮件的“Date:”行。在剥离普通前缀“PATCH <任何东西>”之后,“主题:”行用作提交的标题。“Subject:”这一行应该简洁地描述一行文本中提交的内容。

“From:”和“Subject:”开始主体的行会覆盖从头文件获取的各个提交作者名称和标题值。

提交消息由从“Subject:”取得的标题,空白行和消息的正文形成,直到补丁开始。每行末尾的多余空格将自动删除。

预计补丁将直接跟随消息内联。任何形式的行:

  • 三破折号和行尾,或者
  • 以“diff - ”开头的行,或者
  • 以“Index:”开头的行作为补丁的开始,并且提交日志消息在第一次出现此行之前终止。初次调用时git am,您将其指定要处理的邮箱名称。在看到不适用的第一个补丁后,它会在中间中止。您可以通过以下两种方法之一从中恢复:
  • 通过使用该--skip选项重新运行该命令,跳过当前的修补程序。
  1. 手动解决工作目录中的冲突,并更新索引文件,使其进入补丁应该产生的状态。然后使用该--continue选项运行该命令。

在当前操作完成之前,命令拒绝处理新邮箱,因此如果您决定从头开始,请git am --abort在运行带有邮箱名称的命令之前运行。

在应用任何补丁之前,ORIG_HEAD 被设置为当前分支的顶端。如果您在多次提交时遇到问题,比如git am在错误的分支上运行,或者通过更改邮箱(例如,“发件人:”行中的错误)更容易修复提交中的错误,则这很有用。

Hooks

这个命令可以运行applypatch-msgpre-applypatch以及post-applypatch挂钩。有关更多信息,请参阅 githooks [5]。