【问题标题】:How do I get a "git log" patch for a specific commit如何获取特定提交的“git log”补丁
【发布时间】:2011-05-05 00:55:37
【问题描述】:

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

【问题讨论】:

    标签: git version-control patch git-log


    【解决方案1】:

    对于 git 日志补丁:

    git log -p -1 <commit>
    

    不过,您应该使用 git format-patch 进行补丁:

    git format-patch -1 <commit>
    

    http://www.kernel.org/pub/software/scm/git/docs/git-format-patch.html

    【讨论】:

    • 谢谢。格式补丁而不是git log -p 有什么好处?
    • @Jonathan:两者都足以作为供人类使用的差异(例如用于审查),但 git format-patch 的输出封装了作者信息和提交消息(以及差异文本)以标准格式,以便其他工具可以可靠地解析它(例如,git send-email 将它们作为电子邮件发送,git am 应用一个或多个补丁(例如,一些已作为收到的电子邮件收集的补丁))。
    • 感谢@Chris,这很有帮助。似乎 ubuntu 补丁在解析 git log -p 的输出时遇到问题,所以这可能是解决方案
    • @Jonathan:Git 风格的差异(即带有 diff --git 标头的差异)有几个常规 patch 无法理解的扩展(虽然格式非常相似,所以它可能在许多情况下都有效)。您可以使用git apply(甚至在存储库的工作树之外)应用普通差异(例如来自git diffgit log -p),或者如果您有来自git format-patch 的完整“补丁”,则可以使用git am (重新)创建表示的提交。
    猜你喜欢
    • 2019-12-11
    • 2011-10-03
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 2013-03-28
    相关资源
    最近更新 更多