#gitignore #git #embed

no-std gitignores

GitHub’s collection of gitignores, embedded, automatically updated

14 stable releases

2.3.3 Oct 28, 2023
2.3.2 May 11, 2022
2.3.1 Mar 29, 2022
2.3.0 Feb 16, 2022
1.0.1 Oct 14, 2021

#93 in Development tools

Download history 6/week @ 2024-02-14 17/week @ 2024-02-21 21/week @ 2024-02-28 14/week @ 2024-03-06 16/week @ 2024-03-13 10/week @ 2024-03-20 16/week @ 2024-03-27 37/week @ 2024-04-03

82 downloads per month
Used in 6 crates (3 directly)

CC0 license


Crate release version Crate license: CC0-1.0 MSRV: 1.37.0 (breaking) CI status


GitHub’s collection of gitignores, embedded, automatically updated.

Quick start

gitignores = "1.0.0"


Each gitignore is available as a variant of one of three enums:


The enums implement Display / .to_string(), which will return the contents of the gitignore (only when the std feature is enabled):

println!("{}", gitignores::Root::Rust);

The enums also implement a GitIgnore trait:

trait GitIgnore {
	/// The contents of the gitignore
	/// Returns an empty string if the `no-contents` feature is enabled.
	fn contents(self) -> &'static str;

	/// The file name of the gitignore
	fn file_name(self) -> &'static str;

	/// The full path of the gitignore relative to repo root
	fn file_path(self) -> &'static str;

	/// The list of all included gitignores
	fn list() -> Vec<&'static str>;

Finally, there is a constant with the git reference of the commit the crate was built from:



By default all gitignores are included, but you can customise this as granularily as you wish. To get started with selecting your custom set, first disable the default features:

default-features = false
features = []


Feature name Path in gitignore repo Path in crate
root /*.gitignore Root::
global /Global/**/*.gitignore Global::
community /community/**/*.gitignore Community::

Individual gitignores

Each gitignore can be enabled with the <collection>-<name> feature. Gitignores in subfolders have the folder name prepended to the name, like <collection>-<folder>-<name>. All are lowercased.


  • no-contents: omit the embedded file contents, leaving only the metadata.
  • std: implement the Display trait on the enums.


All globals and only Rust root

default-features = false
features = ["global", "root-rust"]

Some specific gitignores

default-features = false
features = ["community-racket", "global-emacs", "root-commonlisp"]


This crate respects semver!

It will bump the major version (breaking release) when:

  • Gitignores disappear from a collection
  • Gitignores move from a collection to another
  • Gitignores are renamed
  • The minimum required Rust version increases

It will bump the minor version when:

  • New gitignores are added to a collection

It will bump the patch version when:

  • Gitignore contents change

This repo checks for updates to the gitignore repo once a day, and automatically releases if changes are found.


The published crate (gitignores) is generated from the data, which is CC0-1.0, and so it itself is CC0-1.0 (Public Domain).

The generator code is Apache 2.0 / MIT.

No runtime deps