29

运行 git format-patch 时,目的是创建您编写的代码的电子邮件表示。到现在为止还挺好。我不是电子邮件专家,但在我看来,这个格式补丁输出的第一行不是标准的电子邮件标题格式......

来自 de8d128fb520416e0b029c913b3a5ce900d0320c 2001 年 9 月 17 日星期一 00:00:00
消息 ID:
来自:克里斯托弗·哈维
日期:2013 年 4 月 3 日,星期三 10:17:52 -0400
主题:[补丁 0/3] *** 主题在这里 ***
致:克里斯托弗·哈维

*** 在这里模糊 ***

克里斯托弗哈维(3):
  提交 2
  提交 3
  提交 4

 数据 | 3 +++
 1 个文件已更改,3 个插入(+)

--
1.7.12.4

什么是From de8d128fb520416e0b029c913b3a5ce900d0320c Mon Sep 17 00:00:00 2001?日期是什么?它在我看来是任意的,而且它还阻止我将它传送到 sendmail。每次我想发送补丁时,我都必须手动删除该行。

谢谢。

4

5 回答 5

25

git help format-patch

讨论 git format-patch 生成的补丁是 UNIX 邮箱格式,带有一个固定的“魔术”时间戳,表明该文件是从 format-patch 而不是真实邮箱输出的,如下所示:

       From 8f72bad1baf19a53459661343e21d6491c3908d3 Mon Sep 17 00:00:00 2001
       From: Tony Luck <tony.luck@intel.com>
       Date: Tue, 13 Jul 2010 11:42:54 -0700
       Subject: [PATCH] =?UTF-8?q?> > [IA64]=20Put=20ia64=20config=20files=20on=20the=20?=
        =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig=20diet?=
       MIME-Version: 1.0
       Content-Type: text/plain; charset=UTF-8
       Content-Transfer-Encoding: 8bit
于 2013-04-03T14:35:45.083 回答
7

作为Fredrik 回答的附录,以下是 Junio Hamano 的一些相关评论:

"Mon Sep 17 00:00:00 2001"只是一个虚假的随机日期,使普通MUA可以识别 Unix-From 行,并且与您的提交对象没有任何关系。实际日期在Date:标题上。

实际上,我曾经尝试将其更改为 git 的生日Thu Apr 7 15:13:13 2005 -0700(更新。

"From $SHA1 $magic_timestamp"行和其他标题行是为了使它看起来像一个mbox

链接:123

于 2014-11-18T23:07:16.007 回答
4

输出为 mbox 格式。您可以使用以下命令轻松剥离第一行:

git format-patch --stdout <range> | sed 1d

然后随心所欲地处理结果。

或者,您可以使用git它自己来发送电子邮件。尝试:

git send-mail --smtp-server=<your server> *.patch

有关所有选项,请参阅GIT Send-Mail 联机帮助页。

于 2013-04-03T14:40:01.703 回答
2

来自维基百科(https://en.wikipedia.org/wiki/September_17

2001 年——纽约证券交易所在 9 月 11 日袭击事件后重新开放交易,这是自大萧条以来最长的关闭时间。

也许只是巧合!

于 2015-08-06T22:07:35.917 回答
1

Git 2.32(2021 年第二季度)实际上在其余文档开始引用它们之前预先解释了格式补丁输出的部分内容。

请参阅Junio C Hamano ( ) 的提交 28e29ee(2021 年 3 月 24 日(由Junio C Hamano 合并 -- --提交 5c2f7ff中,2021 年 3 月 30 日)gitster
gitster

format-patch:概述什么是“补丁”消息

文本说为每个提交准备了一个称为“补丁”的东西,它适用于电子邮件提交,“am”是使用它的命令,但没有说明“补丁”到底是什么。

页面中的描述也提到了“三划线”,但不清楚它是什么,除非给读者更详细的“补丁”是什么的概述。

添加一个简短的段落以概述输出的外观。

git format-patch现在在其手册页中包含:

在每次提交的一个“消息”中准备每个提交及其“补丁”,格式类似于 UNIX 邮箱。

命令生成的“消息”由三部分组成:

  • From <commit> 以固定日期戳开头的简短元数据标头,Mon Sep 17 00:00:00 2001以帮助“file(1)”之类的程序识别文件是此命令的输出、记录作者身份、作者日期和更改标题的字段(取自提交日志消息的第一段)。

  • 提交日志消息的第二段和后续段落。

  • “补丁”,它是提交与其父级之间的“ diff -p --stat”输出(参见 参考资料)。git diff

日志消息和补丁由一条带三点划线的线分隔。

于 2021-04-02T23:56:31.537 回答