William Vaughn

The git-diff manual review

This is a fairly short, but informative, manual for a very powerful command in the git arsenal. At its simplest the manual explains the following uses of git-diff:

  1. Show changes between the working tree and the index (or another tree).

    AKA What you could tell git to add to the staging area for a commit.

          git diff
  2. Show changes between the index and tree.

    AKA Show what is staged for the next commit.

          git diff --cached HEAD
  3. Show changes between two trees.

    AKA Show difference in between commits

          # Show diff for the last few commits to where our branch is now.
          git diff HEAD~3 HEAD
          # For ranges
          git diff 9a29ab57 HEAD
          git diff 9a29ab57..HEAD
  4. Show changes between two blob objects.

    AKA diff specific files.

          # Show changes to the config.toml file in the last 3 commits.
          git diff HEAD~3..HEAD -- ./config.toml
  5. Show changes between two files on disk.

    AKA Show difference in your working tree, to what’s in a commit.

          # What has changed about these files.
          git diff HEAD -- ./config.toml
          git diff HEAD~3 -- ./blog.org

The way I wrote these here is close to how they’re written in the manual. Understanding git-diff is aided by understanding the flow of git commits and objects; concepts like the index (staging area), the working tree, and references. I suggest reviewing the gittutorial manuals to brush up on these concepts if you need to.

Some other highlights of the manual:

Thanks for reading this manual review! Be well.