如何从最新的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。单击最新提交
可能重复一个好的源代码:小心使用“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