首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >'git format-patch‘和'git diff’有什么区别?

'git format-patch‘和'git diff’有什么区别?
EN

Stack Overflow用户
提问于 2011-01-07 17:33:27
回答 2查看 44.8K关注 0票数 96

我看不出'git format-patch‘和'git diff’的输出有什么不同,有什么区别吗?难道我不能使用'git diff‘来生成一个补丁,然后使用git apply来应用它吗?

我的问题是我向索引添加了更改,但显然git format-patch只接受提交,所以如果我可以使用diff的输出,那么我可以使用这个命令为索引中的更改生成一个补丁:

代码语言:javascript
复制
git diff --cached > index.patch
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-07 17:42:27

使用git format-patch创建的补丁还将包含有关提交的一些元信息(提交者、日期、提交消息等)并将包含二进制数据的diff。所有内容都将被格式化为邮件,这样就可以很容易地发送。然后,接收它的人可以使用git am重新创建相应的提交,所有元数据都将完好无损。它也可以应用于git apply,因为它是简单diff的超集。

一个带有git diff的补丁将是一个简单的上下文差异(想想diff -u)。它也可以应用于git apply,但是元数据不会被重新创建(因为它们不存在)。

总之,git format-patch对于传输提交很有用,而git diff对于获取两个树之间的差异很有用。

票数 134
EN

Stack Overflow用户

发布于 2011-01-07 17:53:15

从手册中,git-format-patch准备了适用于电子邮件提交的补丁,而git-diff则显示了更改。

它们是两个不同的东西,有着不同的目的,它们只是碰巧输出了一种补丁格式。但是git-format-patch添加了关于提交的数据(日期、作者、提交消息),并将其打包成适合作为Unix邮件消息发送的格式(尽管这些只是文件,因此它们可以发送到其他方法,并仍然由git-am应用)。

此外,git-format-patch还会为您指定范围内的每个提交生成一个补丁文件。这些更改将通过git-am作为提交添加到您的存储库。

git-diff只显示了您请求的两种状态之间的差异,并且可以用来创建补丁文件。但这只是一个普通的补丁文件,应用补丁只会改变工作目录的状态。

是的,你可以用这种方式为你的索引创建一个补丁。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4624127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档