Skip to main content

diff Cheatsheet

By Dejan Panovski Updated on Download PDF

Quick reference for the diff command: compare files, output formats, filtering, and patch workflow

diff compares two files or directories line by line and shows the differences. This cheatsheet covers output formats, filtering options, directory comparison, and patch creation.

Basic Usage

Compare files and save output.

CommandDescription
diff file1 file2Compare two files (normal format)
diff -u file1 file2Unified format (most common)
diff -c file1 file2Context format
diff -y file1 file2Side-by-side format
diff file1 file2 > file.patchSave diff to a patch file

Output Symbols

What each symbol means in the diff output.

SymbolFormatMeaning
<normalLine from file1 (removed)
>normalLine from file2 (added)
-unified/contextLine removed
+unified/contextLine added
!contextLine changed
@@unifiedHunk header with line numbers

Directory Comparison

Compare entire directory trees.

CommandDescription
diff -r dir1 dir2Compare directories recursively
diff -rq dir1 dir2Only report which files differ
diff -rN dir1 dir2Treat absent files as empty
diff -rNu dir1 dir2Unified recursive diff (for patches)

Filtering

Ignore specific types of differences.

OptionDescription
-iIgnore case differences
-wIgnore all whitespace
-bIgnore changes in whitespace amount
-BIgnore blank lines
--strip-trailing-crIgnore Windows carriage returns

Common Options

OptionDescription
-uUnified format
-cContext format
-ySide-by-side format
-U nShow n lines of context (default: 3)
-C nShow n lines of context (context format)
-W nSet column width for side-by-side
-sReport when files are identical
--colorColorize output
-qBrief output (only whether files differ)

Patch Workflow

Create and apply patches with diff and patch.

CommandDescription
diff -u file1 file2 > file.patchCreate a patch for a single file
diff -rNu dir1 dir2 > dir.patchCreate a patch for a directory
patch file1 < file.patchApply patch to file1
patch -p1 < dir.patchApply directory patch
patch -R file1 < file.patchReverse (undo) a patch