Reputation: 6466
Could somebody explain me the difference between a .diff file and .patch file.
Upvotes: 52
Views: 15501
Reputation: 7249
patch is a unified diff (-u), if you do a:
diff -u oldfile newfile
,
with patch command line, you can apply the differences to oldfile to become newfile somewhere else.
Upvotes: 10
Reputation: 31078
For me .diff
files contain file differences only (added/deleted lines) that are produced by "git diff"
.patch
files for me also contain the author, date and patch/commit message, as generated by git show
.
Github allows to add .patch
and .diff
to pull request URLs.
The .diff
contains only the file changes, while the .patch
is a serialization of all commits in that PR, with the commit message and file content diff in each.
Upvotes: 6
Reputation: 496772
What matters is the content of the file, not the extension. Both of those extensions imply that some sort of diff utility (diff
, git diff
, git format-patch
, svn diff
) produced the output.
Many diff utilities produce output which can be applied by the patch
command. You will frequently need to use the -d
and -p
options to patch
in order to get the paths matched up right (strip prefix, name target directory). If you see one of those extensions on a file distributed online, it's almost certainly an indication it's compatible with patch
.
Git's diff output is compatible with patch, but I believe svn's is not. Of course, plain patches generated by git diff
are probably best applied by git apply
, and patches generated by git format-patch
are designed for use with git-am
.
Upvotes: 28
Reputation: 28693
There are no differences. diff
utility produces a patch file which is applied using patch
.
Upvotes: 7