有人能解释一下**.diff文件和.patch**文件之间的区别吗?
ykejflvf1#
重要的是文件的内容,而不是扩展名。这两个扩展名都意味着某种diff实用程序(diff,git diff,git format-patch,svn diff)产生了输出。许多diff工具产生的输出可以通过patch命令应用。您经常需要使用-d和-p选项到patch,以获得正确匹配的路径(剥离前缀,名称目标目录)。如果您在在线分发的文件上看到这些扩展名之一,则几乎可以肯定它与patch兼容。Git的diff输出与patch兼容,但我认为svn的不兼容.当然,git diff生成的普通补丁最好用git apply,而git format-patch生成的补丁则是为git-am设计的.
diff
git diff
git format-patch
svn diff
patch
-d
-p
git apply
git-am
lp0sw83n2#
补丁是一个统一的diff(-u),如果您执行:diff -u oldfile newfile,使用patch命令行,您可以将差异应用于oldfile,以在其他地方成为newfile。
diff -u oldfile newfile
nr7wwzry3#
没有区别。diff实用程序生成一个补丁文件,该文件使用patch应用。
3pvhb19x4#
对我来说,.diff文件只包含由“git diff”产生的文件差异(添加/删除的行)。对我来说,.patch文件还包含作者、日期和补丁/提交消息,由git show生成。Github允许添加.patch和.diff到拉取请求URL。.diff只包含文件更改,而.patch是该PR中所有提交的序列化,每个提交的提交消息和文件内容都不同。
.diff
.patch
git show
4条答案
按热度按时间ykejflvf1#
重要的是文件的内容,而不是扩展名。这两个扩展名都意味着某种diff实用程序(
diff
,git diff
,git format-patch
,svn diff
)产生了输出。许多diff工具产生的输出可以通过
patch
命令应用。您经常需要使用-d
和-p
选项到patch
,以获得正确匹配的路径(剥离前缀,名称目标目录)。如果您在在线分发的文件上看到这些扩展名之一,则几乎可以肯定它与patch
兼容。Git的diff输出与patch兼容,但我认为svn的不兼容.当然,
git diff
生成的普通补丁最好用git apply
,而git format-patch
生成的补丁则是为git-am
设计的.lp0sw83n2#
补丁是一个统一的diff(-u),如果您执行:
diff -u oldfile newfile
,使用patch命令行,您可以将差异应用于oldfile,以在其他地方成为newfile。nr7wwzry3#
没有区别。
diff
实用程序生成一个补丁文件,该文件使用patch
应用。3pvhb19x4#
对我来说,
.diff
文件只包含由“git diff”产生的文件差异(添加/删除的行)。对我来说,
.patch
文件还包含作者、日期和补丁/提交消息,由git show
生成。Github允许添加
.patch
和.diff
到拉取请求URL。.diff
只包含文件更改,而.patch
是该PR中所有提交的序列化,每个提交的提交消息和文件内容都不同。