如何从最新的git提交创建补丁?

如何从最新的git提交创建补丁?,git,patch,Git,Patch,我正在寻找从上次提交创建修补程序的命令 我的工作流程有时如下所示: vi some.txt git add some.txt git commit -m "some change" 现在我只想写: git create-patch-from-last-commit-to-file SOME-PATCH0001.patch 我应该把什么放在那里,而不是从上次提交到文件创建补丁 git format-patch -n HEAD^ (查看“帮助”中的许多选项),尽管它实际上是

我正在寻找从上次提交创建修补程序的命令

我的工作流程有时如下所示:

vi some.txt
git add some.txt
git commit -m "some change"
现在我只想写:

git create-patch-from-last-commit-to-file SOME-PATCH0001.patch
我应该把什么放在那里,而不是从上次提交到文件创建补丁

git format-patch -n HEAD^
(查看“帮助”中的许多选项),尽管它实际上是用于邮寄它们的。 只需一次提交

git show HEAD > some-patch0001.patch

将为您提供一个可用的补丁。

您需要git日志的
-p
选项:

git log -1 -p --pretty='%b'

从@Uffused answer中可以看出,您还可以使用无参数的通用表单进行最后一次提交,并将其放入具有以下内容的文件中:

git format-patch HEAD^ --stdout > patchfile.patch
或者,当必须通过加倍插入符号来转义插入符号时,对windows用户来说更干净:

git format-patch HEAD~1 --stdout > patchfile.patch

另一种方法是,如果具有该特定提交的提交id, 你可以用

git format-patch -1 {commit-id}

为我做这项工作。

例如,如果您正在Github上的分支“branch\u name”中推送代码。此分支上的每个提交都将有单独的url。单击最新提交

  • 在此url末尾添加.patch。因此,修改后的url如下所示:
  • 然后分别复制并粘贴步骤1中的全部内容 本地文件,并使用.patch扩展名保存
  • 补丁已经可以使用了

  • 可能重复一个好的源代码:小心使用“git show HEAD>some-patch0001.patch”,如果在彩色终端中调用它,它也会将颜色转义序列复制到文件中。您还可以使用
    git diff>change.patch
    。您还可以包括一个修订范围,它允许您为未提交的更改创建修补程序。然而,最大的区别是,它不包括二进制文件中的差异。有关更多详细信息,请参见的答案。@hrach不在Linux上,它不在,因为第一行没有这样说。
    git-format patch-1
    git-format patch-n HEAD^
    都可以。谢谢,我不知道它是字母“n”的字面意思,我以为它是一个占位符(format patch有“-n”和“-”两个选项)。为我工作-谢谢。如果你碰巧使用Windows和Git,你就必须避开胡萝卜(我知道这很可恶):“Git格式补丁头^^--stdout>patchfile.patch”为了避免Windows不得不避开插入符号(这使它看起来像一个不同的有效Git命令)的问题,你可以使用
    Git格式补丁头~1
    的替代方法。我认为这样在Windows上就不会那么混乱了。如果你不喜欢文件开头的电子邮件from/date/subject行,就用这个。
    git format-patch -1