在不更改提交消息的情况下将补丁应用为提交?
Apply patch as commit without changing the commit's message?
为了应用补丁作为提交 建议使用:
git am --signoff < a_file.patch
但是,它更改了 git log
中的提交消息:
yyy
Signed-off-by: Name Surname <local-part@domain_name>
而原始提交的消息是:
[xxx] yyy
问题:如何保留原始提交的信息?
更新。是的,我知道 git commit --amend
。但是,有什么方法可以避免使用任何额外的命令吗?
你的命令做了两件事。首先,--signoff
命令添加以 Signed-off-by
开头的行。一些项目,如 Git 和 Linux,使用它来跟踪补丁的来源并验证每个人都同意许可条款。但是如果你不想要这个修改,比如说,因为你的项目没有使用那个机制,那么你可以省略它。
此外,git am
默认情况下会通过删除括号中的项目来清理主题行。那是因为在典型的邮件列表工作流程中,人们经常使用 header,例如 [PATCH]
,因此用户可以轻松找到补丁,但这并不是提交消息的一部分。如果你不想完成这个剥离,你可以使用 --keep
,并且 Git 不会剥离括号之间的数据。如果您只想去除文字文本 [PATCH]
,请改用 --keep-non-patch
。
为了应用补丁作为提交 建议使用:
git am --signoff < a_file.patch
但是,它更改了 git log
中的提交消息:
yyy
Signed-off-by: Name Surname <local-part@domain_name>
而原始提交的消息是:
[xxx] yyy
问题:如何保留原始提交的信息?
更新。是的,我知道 git commit --amend
。但是,有什么方法可以避免使用任何额外的命令吗?
你的命令做了两件事。首先,--signoff
命令添加以 Signed-off-by
开头的行。一些项目,如 Git 和 Linux,使用它来跟踪补丁的来源并验证每个人都同意许可条款。但是如果你不想要这个修改,比如说,因为你的项目没有使用那个机制,那么你可以省略它。
此外,git am
默认情况下会通过删除括号中的项目来清理主题行。那是因为在典型的邮件列表工作流程中,人们经常使用 header,例如 [PATCH]
,因此用户可以轻松找到补丁,但这并不是提交消息的一部分。如果你不想完成这个剥离,你可以使用 --keep
,并且 Git 不会剥离括号之间的数据。如果您只想去除文字文本 [PATCH]
,请改用 --keep-non-patch
。