如何获取特定提交的“git log”补丁

28
如果我有一个尚未推送到远程仓库的提交哈希,如何仅为该提交生成一个补丁? 我想使用git log -p --no-names命令,但找不到传递特定提交哈希的开关。 我应该使用不同的git命令吗?
1个回答

49

使用 format-patch 相比于 git log -p 有什么好处?谢谢。 - Jonathan Day
4
@Jonathan:两者都适用于人类(例如用于审核)阅读的差异,但git format-patch的输出以标准格式封装了作者信息和提交消息(以及差异文本),以便其他工具可靠地解析它们(例如使用git send-email将其作为电子邮件发送和使用git am来应用一个或多个补丁(例如已收集为接收电子邮件的补丁)。 - Chris Johnsen
谢谢@Chris,那非常有帮助。看起来Ubuntu的补丁在解析git log -p的输出时出现了问题,那可能是解决方案。 - Jonathan Day
2
@Jonathan:Git 风格的差异(比如那些带有“diff --git”头的差异)具有许多正常的 patch 无法理解的扩展名(尽管两者格式非常相似,因此在许多情况下可能有效)。您可以使用 git apply 应用普通差异(例如来自 git diffgit log -p 的差异),甚至可以在存储库的工作树之外应用它们;或者如果您拥有完整的“补丁”,即 git format-patch,则可以使用 git am 来 (重新)创建相关提交。 - Chris Johnsen

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