Sometimes, it is useful to suppress certain files from git diff
output, especially when the files are large, machine-generated, or not intended for human reading. Typical examples include encrypted files such as *.gpg
and *.asc
, as well as binary assets like images, audio files, and similar media. These files are usually represented as opaque binary data in diffs, providing no useful information and adding extraneous clutter to git diff
output.
Git offers a solution for this through adding YOUR-FILE-PATTERN -diff -text
to the .gitattributes
file.
Solution: A .gitattributes file that is local to the repository
The .gitattributes
file can be defined locally within each individual repository.
For example, to prevent git diff
from displaying diffs for files with the .asc
and .gpg
extensions, include the following lines in the .gitattributes
file at the root of your Git repository:
*.asc -diff -text
*.gpg -diff -text
Code language: plaintext (plaintext)
Using -diff -text
in .gitattributes
is beneficial for binary or non-human-readable files because it ensures Git neither attempts to generate textual diffs (-diff
) nor applies any text-related processing like end-of-line normalization (-text
).
This combination prevents irrelevant or misleading changes from appearing in diffs, avoids potential corruption from automatic text conversions, and keeps version control output clean and focused on meaningful, human-readable changes.
Alternative solution: A global .gitattributes_global file
Rather than adding these rules to every repository individually, you can define them once in a global ~/.gitattributes_global
file. This file applies to all Git repositories for your user account unless overridden by a repository-specific
..gitattributes
To set up a global
file:.gitattributes_global
Configure Git to use it:
git config --global core.attributesfile ~/.gitattributes_global
Code language: plaintext (plaintext)
Add global rules to the ~/.gitattributes_global
file. For example:
*.asc -diff -text -diff
*.gpg -diff -text -diff
Code language: plaintext (plaintext)
This setup ensures consistent handling of non-human-readable files across all repositories without the need for redundant configuration.
Conclusion
Suppressing diffs for non-human-readable files with .gitattributes
, whether configured locally or globally, reduces noise in version control workflows. This keeps Git diff output focused on meaningful textual modifications, prevents clutter from binary content, and safeguards against unwanted transformations.
Related links