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

cla*_*laj 186 git patch

我正在寻找从最后一次提交创建补丁的神奇命令.

我的工作流程有时看起来像这样

vi some.txt
git add some.txt
git commit -m "some change"
Run Code Online (Sandbox Code Playgroud)

现在我只想写

git create-patch-from-last-commit-to-file SOME-PATCH0001.patch
Run Code Online (Sandbox Code Playgroud)

但是我应该把它放在那里而不是create-patch-from-last-commit-to-file

Use*_*ess 293

一般来说,

git format-patch -n HEAD^
Run Code Online (Sandbox Code Playgroud)

(检查许多选项的帮助),虽然它真的用于邮寄它们.对于单个提交只是

git show HEAD > some-patch0001.patch
Run Code Online (Sandbox Code Playgroud)

会给你一个可用的补丁.

  • 小心使用"git show HEAD> some-patch0001.patch",如果在彩色终端中调用它,它也会将颜色转义序列复制到文件中. (18认同)
  • 你也可以使用`git diff> change.patch`.您还可以包含修订范围,并允许您为未提交的更改创建修补程序.然而,最大的区别是_it不会包含二进制文件的差异_.有关更多详细信息,请参阅[git format-patch'和'git diff'之间有什么区别?](http://stackoverflow.com/a/4624292/2506021)的答案. (12认同)
  • 不,因为这不是第一行所说的.`git format-patch -1`或`git format-patch -n HEAD ^`应该可以工作. (4认同)
  • 谢谢,我没有理解它字面意思是字母'n',我认为它是一个占位符(格式补丁有'-n'和' - <n>'选项). (4认同)
  • @hrach不在Linux上它没有 (3认同)
  • @alper您可以使用 `git diff HEAD~..HEAD` 来显示仅最后一次提交的差异。它和 git show HEAD 之间的唯一区别是后者在开头包含提交信息。 (2认同)

a1a*_*1an 55

从@Useless回答中,你也可以使用没有参数的通用表单进行最后一次提交,并将其放入一个文件中:

git format-patch HEAD^ --stdout > patchfile.patch
Run Code Online (Sandbox Code Playgroud)

或者,对于Windows用户来说更清洁,因为必须通过加倍来删除插入符号:

git format-patch HEAD~1 --stdout > patchfile.patch
Run Code Online (Sandbox Code Playgroud)

  • 为了避免Windows必须转义该插入符号的问题(使其看起来像一个不同的有效git命令),您可以使用`git format-patch HEAD~1`的替代方法.我认为这最终会减少在Windows上的混乱. (3认同)
  • 为我工作 - 谢谢.如果你碰巧使用Windows和Git,你必须逃避胡萝卜(我知道这很糟糕):"git format-patch HEAD ^^ --stout> patchfile.patch" (2认同)

Vij*_*y C 29

另一种方式,如果有特定提交的提交ID,你可以使用,

git format-patch -1 {commit-id}
Run Code Online (Sandbox Code Playgroud)


Bra*_*dan 9

你需要-pgit log选项:

git log -1 -p --pretty='%b'
Run Code Online (Sandbox Code Playgroud)


Kat*_*atu 7

git format-patch -1
Run Code Online (Sandbox Code Playgroud)

为我做这份工作。


归档时间:

查看次数:

173359 次

最近记录:

8 年,1 月 前