【发布时间】:2011-05-05 00:55:37
【问题描述】:
如果我有一个尚未推送到源的提交哈希,我如何仅为该提交生成补丁。我想使用git log -p --no-names,但看不到传递特定提交哈希的开关。我应该使用不同的 git 命令吗?
【问题讨论】:
标签: git version-control patch git-log
如果我有一个尚未推送到源的提交哈希,我如何仅为该提交生成补丁。我想使用git log -p --no-names,但看不到传递特定提交哈希的开关。我应该使用不同的 git 命令吗?
【问题讨论】:
标签: git version-control patch git-log
对于 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 有什么好处?
git format-patch 的输出封装了作者信息和提交消息(以及差异文本)以标准格式,以便其他工具可以可靠地解析它(例如,git send-email 将它们作为电子邮件发送,git am 应用一个或多个补丁(例如,一些已作为收到的电子邮件收集的补丁))。
git log -p 的输出时遇到问题,所以这可能是解决方案
diff --git 标头的差异)有几个常规 patch 无法理解的扩展(虽然格式非常相似,所以它可能在许多情况下都有效)。您可以使用git apply(甚至在存储库的工作树之外)应用普通差异(例如来自git diff 或git log -p),或者如果您有来自git format-patch 的完整“补丁”,则可以使用git am (重新)创建表示的提交。