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

Jon*_*Day 22 git version-control patch git-log

如果我有一个尚未被推送到源的提交哈希,我怎么才能为该提交生成一个补丁.我想使用git log -p --no-names但无法看到交换机传递特定的提交哈希.我应该使用不同的git命令吗?

man*_*lds 39

对于git log补丁:

git log -p -1 <commit>
Run Code Online (Sandbox Code Playgroud)

您应该使用git format-patch补丁:

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

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

  • @Jonathan:两者都足以作为人类消费的差异(例如供审阅),但是`git format-patch`的输出将作者信息和提交消息(以及差异文本)封装在标准中格式,以便它可以被其他工具可靠地解析(例如`git send-email`将它们作为电子邮件和`git am`发送以应用一个或多个补丁(例如,一些已经收集作为收到的电子邮件)). (2认同)
  • @Jonathan:Git 风格的差异(即那些带有 `diff --git` 标头的差异)有几个扩展,常规 *patch* 无法理解(尽管格式非常相似,所以它可能在许多情况下工作)。你可以使用`git apply`(甚至在存储库的工作树之外)应用普通差异(例如来自`git diff`或`git log -p`),或者如果你有来自`git format-patch的完整“补丁” `,你可以使用 `git am` 来(重新)创建表示的提交。 (2认同)