Show changes to tracked files.

# To show unstaged, uncommitted changes:
git diff

# To show all uncommitted changes (including staged ones):
git diff HEAD

# To show only staged (added, but not yet committed) changes:
git diff --staged

# To show changes from all commits since a given date/time (a date expression, e.g. "1 week 2 days" or an ISO date):
git diff 'HEAD@{3 months|weeks|days|hours|seconds ago}'

# To show only names of changed files since a given commit:
git diff --name-only <commit>

# To output a summary of file creations, renames and mode changes since a given commit:
git diff --summary <commit>

# To create a patch file:
git diff > <target_file>.patch

# To compare a single file between two branches or commits:
git diff <branch_1>..<branch_2> [--] <path/to/file>

# To compare different files from the current branch to other branch:
git diff <branch>:<path/to/file2> <path/to/file>