如何使用git am从电子邮件消息中应用补丁?

29

我对git非常熟悉(至少基础知识-分支、合并、与同行协作等),但是前几天我的一个朋友告诉我,我们可以将git与我们的邮箱一起使用。

所需要的命令是git am(这里是手册页面)。

请有人帮助我开始使用git am


你使用的是Unix/Linux还是Windows操作系统?你会使用电子邮件吗?或者你有可以交换补丁文件的网络连接吗? - Philip Oakley
一个完整的答案可能取决于1)您使用哪个电子邮件客户端2)是否订阅了发送补丁的邮件列表3)项目使用的邮件列表归档软件。 - philb
4个回答

27

另一个重要的工具是git format-patch。它可以创建要通过电子邮件发送的补丁,然后可以使用git send-email或直接发送。例如:

# create a patch for each commit from origin's master to yours
git format-patch origin/master..master

# now send them... 
# there are a zillion options here, and also some configuration; read the man page
git send-email --to=maintainer@project.com --from=me@here.com ... *.patch

git am可接受format-patch创建的补丁,并按顺序应用它们,例如:

git am *.patch

你需要自己弄清如何从你的邮件客户端以mbox格式导出补丁,不过我想你也可以将它们作为附件发送或直接传输。

你可以在一个存储库中完全尝试此功能,以了解其工作原理。按照上述步骤创建一组补丁,然后检出起始点,并使用git am应用这些补丁。


1
我能够从Hotmail或Gmail帐户运行这个吗?如果可以,怎么做? - DarkKnight
2
@DarkKnight:在哪个方面?manpage中有使用gmail作为git send-email的smtp服务器的说明。在另一端……如果补丁是作为附件发送的,只需保存它们并按照我在答案中解释的方式应用即可。如果它们是内联发送的,则可以(在gmail中)显示原始消息(右上角的下拉菜单),将其保存,删除顶部的空行(不确定来自何处),然后在其上运行git am - Cascabel
你使用什么客户端来获取mbox格式的消息? - Ciro Santilli OurBigBook.com
请注意,git am *.patch在Windows命令提示符下无法正常工作。运行该命令时,请务必使用bash。请参阅https://dev59.com/zJnga4cB1Zd3GeqPetsP#60097534。 - esteuart

5

补丁工作流解决方案

https://github.com/getpatchwork/patchwork

由于似乎没有现成的工具将电子邮件转换为mbox,因此许多基础项目都有一个相关的补丁工作流实例,有时官方推荐,在https://patchwork.ozlabs.org/上托管,例如:

Patchwork订阅了列表,并解析由git send-email生成的补丁,允许您下载补丁。

所以是的,在电子邮件上又有了另一个工具层...

Thunderbird导出为mbox

问自: What is the easiest way to apply git series of patches from Thunderbird 迄今没有答案。

另请参见


1
这个技巧非常棒。我发现Patchwork下载为mbox功能和git am /path/to/download.patch命令非常有用。 - remcycles
你写道“GCC,其中包括GDB”,但我没有看到任何GDB补丁...也许曾经有过,但现在没有了? - philb
@philb 嗯,我不记得了,现在我已经更新了看起来正确的版本,谢谢你。 - Ciro Santilli OurBigBook.com

4

您需要一个可以将邮件导出为mbox文件的邮件客户端。导出邮件并运行git-am 您的mbox文件。 完成。


2
如果您想要从项目的邮件列表中申请补丁,而该邮件列表使用public-inbox(这是大多数Linux子项目和Git的情况),则可以使用b4 am工具下载补丁系列的最新版本,并将其导入到git am中:
b4 am -o- $url | git am

其中 url 是线程中任意消息的 URL。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接