有人能向我解释一下.diff文件和.patch文件之间的区别吗?
重要的是文件内容,而不是扩展名。这两个扩展名都意味着某种差异工具(diff
、git diff
、git format-patch
、svn diff
)生成了输出。
许多差异工具生成的输出可以被patch
命令应用。你经常需要使用-d
和-p
选项来给patch
指定正确的路径(去掉前缀,指定目标目录)。如果你在一个在线分发的文件中看到这些扩展名,几乎可以确定它与patch
兼容。
Git的差异输出与patch兼容,但我认为svn的输出不兼容。当然,使用git apply
可能最好应用由git diff
生成的普通补丁,而使用git format-patch
生成的补丁则设计用于与git-am
一起使用。
补丁是一个统一的差异(-u),如果你执行以下命令:
diff -u oldfile newfile
,
使用补丁命令行,你可以将差异应用于oldfile,使其成为其他地方的newfile。
没有什么区别。diff
实用程序会生成补丁文件,使用patch
应用该补丁文件。
diff
创建补丁时,你可以将其命名为 foo.diff 或 foo.patch(或其他任何名称)。patch
程序并不在意。 - eajpatch
吗……?” 最好的答案是“试一试”。如果补丁无法应用,或者 patch
无法读取它,你会收到错误提示。如果可以工作,那就可以了。 - Cascabel.diff
文件仅包含"git diff"命令生成的文件差异(添加/删除行)。.patch
文件也包含作者、日期和补丁/提交消息,由git show
生成。
.patch
和.diff
添加到拉取请求URL中。
.diff
仅包含文件更改,而.patch
是该PR中所有提交的序列化,每个提交都包含提交消息和文件内容差异。