Git: Ignoring Files
Tags: software, versioncontrol, git, global
Published: 2023-04-28 16:58:44

---
title: Git: Ignoring Files
published: true
date: 2022-12-16 06:32:18 UTC
tags: Software,versioncontrol,git,global
canonical_url: https://vuyisile.com/git-ignoring-files/
---

Git can be configured to ignore some files in your computer or repository you don’t want to track. These files can include log files, `.env` files that contain sensitive information, files generated automatically by your text editor or build system, or any locally generated files that your team members will not need.

You use `gitignore` files to tell git what files to ignore. Once a file is already tracked, adding it to `gitignore` won’t un-track it. Each line in the `gitignore` file represents a file name pattern that git will try to match. Here is an example `gitignore` file:

```
$ cat .gitignore
*.[oa]
*~
```

The first line tells git to ignore all files ending in `.o` or `.a`. The second line tells git to ignore all files that end with a tilde(`~`), which many editors use to mark temp files. Setting up a gitignore file early in your project is a good practice, so you don’t accidentally add files you don’t really want to your git repository.

Git usually checks for these patterns in multiple locations and where you place the patterns depends on how you want to use the patterns.

## Ignoring files in a single repository

You can tell git to ignore files in a repository or project by adding a `.gitignore` file in the project’s root. This file tells git what files and folders to ignore when you make a commit. To share this file with others, commit it to git. If you want to ignore a file that is already tracked or checked in, you must untrack the file first before ignoring it:

```
$ git rm --cached FILENAME
```

## Ignoring files in all repositories

You can create a global `gitignore` file to define a list of rules or files to ignore for every project on your computer. To do this, you create a `gitignore` file and configure git to use it globally. For example, you could create `.gitignore_global` in your home directory and then do this:

```
$ git config --global core.excludesfile ~/.gitignore_global
```

## Excluding files without creating a .gitignore file

If you don’t want to share a `.gitignore` file or want to add additional rules that are specific to your workflow, you can create a set of rules to ignore that don’t get committed to the repository by editing the file in `.git/info/exlude` within the root of your git project and adding the patterns there.

## Gitignore pattern examples

| Pattern | Description |
| --- | --- |
| `*.oa` | Ignore `.o` or `.a` files |
| `#` | This or a blank line is treated as a comment or space for readability. |
| `\#` | Ignore patterns that start with a hash |
| `/` | Start a pattern with a forward slash to avoid recursivity. End patterns with  
a slash to specify a directory. |
| `/TODO` | Ignore the `TODO` file in \*this\* directory only |
| `build/` | Ignore all files in any directory called `build` |
| `!` | Negates the pattern that comes after it |
| `?` | Matches any one character except for `/` |
| `[0-9]` | Range notation; matches any digit between `0 `and `9` |
| `[a-z]` | Range notation; matches any character between `a` and `z` |
| `a/**/z` | Match any nested directories. e.g `a/z`, `a/b/z`, `a/b/c/z` |
| `*.a` | Ignore( or don’t track) any `.a` files |
| `!lib.a` | Do not ignore the `lib.a` file |
| `doc/*.txt` | This will ignore `/doc/notes.txt` but not `doc/server/arch.txt` |
| doc/\*\*/\*.pdf | Ignore `.pdf` files in the doc directory and any of its subdirectories. |
| | |

## Conclusion

This post was a quick summary of how to ignore files in git using `.gitignore` files and some of the patterns you can use in them. GitHub [maintains a list of `.gitignore` templates](https://github.com/github/gitignore) you can use in your projects, so you don’t have to come up with a list of rules every time you create a project.

**Further Reading:**

* * *

- [Ignoring files](https://git-scm.com/docs/gitignore) – Git Documentation
- [A collection of useful .gitignore templates](https://github.com/github/gitignore) – GitHub