.gitignore file is a text file that tells Git which files or folders to ignore in a project.
.gitignore file is usually placed in the root directory of a project. You can also create a global
.gitignore file and any entries in that file will be ignored in all of your Git repositories.
To create a local
.gitignore file, create a text file and name it
.gitignore (remember to include the
. at the beginning). Then edit this file as needed. Each new line should list an additional file or folder that you want Git to ignore.
The entries in this file can also follow a matching pattern.
*is used as a wildcard match
/is used to ignore pathnames relative to the
#is used to add comments to a
This is an example of what the
.gitignore file could look like:
# Ignore Mac system files .DS_store # Ignore node_modules folder node_modules # Ignore all text files *.txt # Ignore files related to API keys .env # Ignore SASS config files .sass-cache
To add or change your global .gitignore file, run the following command:
git config --global core.excludesfile ~/.gitignore_global
This will create the file
~/.gitignore_global. Now you can edit that file the same way as a local
.gitignore file. All of your Git repositories will ignore the files and folders listed in the global
Removing Files From Git Tracking
Occasionally, you may forget to add a particular file or folder you do not want to track to your
.gitignore file. Or you may have forgotten to set up a
.gitignore file altogether. Here’s how to fix those situations, but before you do, commit your changes, including your updated
Removing a Single File
‘I forgot to ignore that scratch file!’ you say. It happens. And you can fix the mistake as easily as you made it.
git rm --cached /path/to/my/file
rm tells Git to remove what you specify. However, in this case, you are adding
--cached, which tells Git to just remove the item from Git’s index, and not your filesystem. If you run
git status at this point, Git will report that your file is being deleted. Don’t worry. This will only delete it from Git, and not your filesystem. Commit that change and then look for yourself.
Removing a Folder
This can happen with an entire folder as well. The steps to fix it are the same, with one minor difference.
git rm -r --cached /path/to/directory/
Here, you added the
-r option, which tells Git to recursively remove everything inside the directory you gave it, including itself. Again, commit your ‘deleted’ files and your repository will be clean once again.
.gitignore when you initialized your project? Or you added a bunch of test/config/whatever files and folders you didn’t intend to add to your repository without updating
.gitignore? You can fix that too.
git rm -r --cached . git add . git commit -m 'fix .gitignore'
Not the cleanest commit history, but your repo will be sparklingly clean. A little more was going on here. First, you removed
., which represents everything. Since
git rm can be unforgiving, perhaps you should run it, or any of these commands, with the
-n option, like
git rm -r -n --cached . in this case. Or use the
--dry-run option, which is the long hand version telling Git to just report what it is going to do without taking any action. For now, run it without the
Congratulations, you removed everything from your repo. Time to add it back in, minus what your edited
.gitignore file will omit. That’s what our
git add . line does for you.
Commit your changes with whatever message you feel is necessary. The commit itself won’t look very nice in this case. You did remove and add everything, for what it’s worth. But your repository will be in the clean state you had intended all along.