Data report"State of code review 2024" is now liveRead the full report

How to use git diff while excluding files

Greg Foster
Greg Foster
Graphite software engineer


Note

This guide explains this concept in vanilla Git. For Graphite documentation, see our CLI docs.


git diff is used to show the differences between two objects in a Git repository. These objects can be commits, branches, the working directory, and the staging area (index). By default, git diff will show you differences that are not yet staged.

  • Focus: Focus on significant changes by excluding files or directories that don't require review (like configuration files, logs, or dependencies).
  • Noise reduction: Reduce clutter in diff outputs, making it easier to spot important changes.
Stop wrestling with Git commands

The Graphite CLI takes all the pain out of Git, allowing you to ship faster and stop Googling Git commands.

Learn more

Git does not include a built-in parameter specifically for excluding files directly in the git diff command, but you can achieve this by combining Git attributes or using pathspec filtering.

A .gitattributes file is a configuration file used by Git to define attributes and settings for files in a repository. It allows users to specify custom behaviors such as text or binary handling, line ending normalization, and merge strategies for specific file types. This file is similar to the Git .config file, but specifically defines attributes and settings for files within a repository, while the git config generally deals with broader configuration settings for Git itself.

We can leverage a .gitattributes file to ignore files when executing the git diff command.

  1. Create or modify a .gitattributes file in your repository root.

  2. Add rules to ignore changes for specific files or directories. For example:

    Terminal
    # Ignore changes in specific config files
    secret.config -diff
    # Ignore changes in a specific directory
    logs/ -diff

    In this file, -diff tells Git to treat changes in these files as if they are binary and without any diff to output.

  3. Test your configuration:

    Terminal
    git diff

    After setting up the .gitattributes file, changes to the specified files or directories should no longer appear in the diff.

The best engineers use Graphite to simplify Git

Engineers at Vercel, Snowflake & The Browser Company are shipping faster and staying unblocked with Graphite.

Git started for free

Git supports pathspec patterns in many commands to limit the scope of certain Git operations. To exclude certain files or directories from your git diff output, use the :(exclude) pathspec.

  1. Basic usage:

    Terminal
    git diff -- . ':(exclude)path/to/exclude'

    This command shows changes for all files in the current directory, except those in path/to/exclude.

  2. Exclude multiple paths:

    Terminal
    git diff -- . ':(exclude)path/to/exclude' ':(exclude)another/path/to/exclude'

    Use multiple :(exclude) patterns to exclude many files or directories.

For further reading, see the official Git documentation.

Stay unblocked. Ship faster.
Experience the new developer workflow - create, review, and merge code continuously. Get started with one command.
Learn more

Give your PR workflow
an upgrade today

Stack easier | Ship smaller | Review quicker

Or install our CLI.
Product Screenshot 1
Product Screenshot 2