补丁和差异文件之间的区别

Sen*_*Sen 26 linux svn git

有人可以解释一下.diff文件和.patch文件之间的区别.

Cas*_*bel 20

重要的是文件的内容,而不是扩展名.这两个扩展意味着某种diff工具(的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.


Sér*_*gio 6

patch是一个统一的diff(-u),如果你这样做: diff -u oldfile newfile,使用patch命令行,你可以将差异应用到oldfile,成为其他地方的newfile.


kha*_*hik 5

没有区别.diff实用程序生成一个使用的补丁文件patch.

  • 也就是说,当您使用 `diff` 创建补丁时,您将其命名为 foo.diff 或 foo.patch(或其他任何名称)。`patch` 程序不在乎。 (2认同)
  • @Sen:"我可以使用`patch` ......?" 最好的答案是"试试看".如果补丁不适用,或者"补丁"无法读取,则会出错.如果它工作,它的工作原理. (2认同)

cwe*_*ske 5

对于我来说.diff,文件仅包含由“git diff”生成的文件差异(添加/删除的行)

.patch我的文件还包含作者、日期和补丁/提交消息,由git show.


Github 允许添加.patch.diff拉取请求 URL。只包含.diff文件更改,而 是.patch该 PR 中所有提交的序列化,每个提交消息和文件内容差异。