git-diff

Show differences between commits and files

TLDR

Show unstaged changes
$ git diff
Show staged changes
$ git diff --staged
Diff between branches
$ git diff [branch1]..[branch2]
Diff specific file
$ git diff [file.txt]
Show word-level diff
$ git diff --word-diff
Show stat summary
$ git diff --stat
Diff between commits
$ git diff [commit1] [commit2]
Diff against merge base (changes on a branch since it diverged)
$ git diff [main]...[feature-branch]

SYNOPSIS

git diff [options] [commit] [--] [path...]

DESCRIPTION

git diff shows differences between commits, branches, working directory, and staging area. It is essential for reviewing changes before committing and understanding what changed between versions.By default, it shows unstaged changes (working directory vs index). With --staged, it shows what will be committed. When given two commits or branches, it shows all changes between them.

PARAMETERS

--staged, --cached

Compare staged changes to last commit.
--stat
Show diffstat summary.
--word-diff
Show word-level changes.
--color-words
Colored word diff.
--name-only
Show only changed file names.
--name-status
Show names and change status.
-U n, --unified n
Lines of context.
--no-index
Compare files outside repository.
--diff-filter filter
Filter by change type (A, D, M, R).
-b, --ignore-space-change
Ignore whitespace changes.
-w, --ignore-all-space
Ignore all whitespace.
-M, --find-renames
Detect and report renamed files.
-C, --find-copies
Detect and report copied files.

INSTALL

sudo apt install git
sudo dnf install git
sudo pacman -S git
sudo apk add git
sudo zypper install git
brew install git
nix profile install nixpkgs#git

SEE ALSO

git(1), git-log(1), diff(1), vimdiff(1)