有人可以解释一下 .diff 文件和 .patch 文件之间的区别。
答案 0 :(得分:19)
重要的是文件的内容,而不是扩展名。这两个扩展意味着某种差异效用(diff
,git diff
,git format-patch
,svn diff
)产生了输出。
许多diff实用程序产生的输出可以由patch
命令应用。您经常需要使用-d
和-p
选项patch
才能使路径匹配正确(条带前缀,名称目标目录)。如果您在网上分发的文件中看到其中一个扩展名,那几乎可以肯定它与patch
兼容。
Git的差异输出与补丁兼容,但我相信svn不是。当然,git diff
生成的普通补丁最好由git apply
应用,git format-patch
生成的补丁设计用于git-am
。
答案 1 :(得分:6)
补丁是一个统一的差异(-u),如果你这样做:
diff -u oldfile newfile
,
使用patch命令行,您可以将差异应用于oldfile以在其他位置成为newfile。
答案 2 :(得分:5)
没有区别。 diff
实用程序生成一个使用patch
应用的补丁文件。
答案 3 :(得分:0)
对我来说,.diff
文件仅包含由“git diff”生成的文件差异(添加/删除的行)
.patch
文件还包含由 git show
生成的作者、日期和补丁/提交消息。
Github 允许将 .patch
和 .diff
添加到拉取请求 URL。
.diff
仅包含文件更改,而 .patch
是该 PR 中所有提交的序列化,每个提交信息和文件内容差异。