Difference between patch and diff files

10,066

Solution 1

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.

Solution 2

There are no differences. diff utility produces a patch file which is applied using patch.

Solution 3

patch is a unified diff (-u), if you you do a: diff -u oldfile newfile, with patch command line, you can apply the differences to oldfile to become newfile somewhere else.

Solution 4

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.

Share:
10,066
Navaneeth Sen
Author by

Navaneeth Sen

Updated on June 04, 2022

Comments

  • Navaneeth Sen
    Navaneeth Sen almost 2 years

    Could somebody explain me the difference between a .diff file and .patch file.

  • eaj
    eaj over 13 years
    That is to say, when you use diff to create the patch, you call it foo.diff or foo.patch (or anything else). The patch program doesn't care.
  • Navaneeth Sen
    Navaneeth Sen over 13 years
    so if a diff file is given and it is said that you should use it for patching the source, what does it imply. Can i use the patch -d <name of the directory which contains source to be patched> -p[n] <name of the diff file> command to patch it?
  • Cascabel
    Cascabel over 13 years
    @Sen: "Can I use patch...?" The best answer there is "try it and see". If the patch doesn't apply, or patch can't read it, you'll get errors. If it works, it works.
  • khachik
    khachik over 13 years
    -d ... -p are to avoid creating the same directory structure as where the patch has been generated. e.g. if the patch file contains /home/user/projects/p1/prog.c and needs to be applied to /home/anotheruser/work/project1/prog.c, patch -d /home/anotheruser/work/project <file.patch does it. But if there are two files to be patched - prog.c lib/lib.c, you need to do patch -d /home/anotheruser/work/project1 -p5 <file.patch
  • Chad M
    Chad M about 8 years
    I like this idea. Patches being a collection of diffs. I wasn't looking for a "correct extension" but a maybe a standard practice for naming. Whether or not this is in common use, it makes sense to me. I'll go forward using .diff for single file diffs and .patch for multiple consolidated diffs.