首页 > 解决方案 > 在两个分支之间生成补丁格式

问题描述

我想知道如何在两个分支的最后一次提交之间生成格式补丁。

format-patch我想获得与命令完全相同的格式。

我尝试了一个类似的命令,git diff b1..b2 -- > diff.patch但它没有给出我想要的输出格式。

标签: git

解决方案


我想获得与 format-patch 命令完全相同的格式。

你无法得到它,因为git format-patch它的输出格式是格式化一个或多个现有提交的结果。两个分支提示之间的差异不是现有的提交

如果你想要的不是完全相同的格式,而是大致相同的格式,你可以得到。这有多容易或多难取决于您希望生成的补丁有多近似。

请注意,输出git format-patch由两部分组成:

  • 表示提交元数据的文本部分;和
  • 由 产生的差异git diff

然后这两个部分得到一个邮箱样式的包装。标From头使用提交哈希 ID,这意味着必须有一个生成差异的提交。Date: 和 Subject: 标头对一些提交元数据进行编码,其余部分则在差异上方的文本中。

第一部分是不可能精确复制的,因为不涉及提交(因此没有提交元数据)。第二部分是易于重现的部分:只需git diff在有问题的两个提交上运行。

我尝试了一个类似的命令,git diff b1..b2 -- > diff.patch但它没有给出我想要的输出格式。

在这种情况下,你将不得不更明确地说明你愿意接受什么。第一部分你想要什么?您将在哪里获得它,因为没有单一的提交可以从中获得它?


推荐阅读