I have an already initialized Git repository that I added a .gitignore
file to. How can I refresh the file index so the files I want ignored get ignored?
To untrack a single file that has already been added/initialized to your repository, i.e., stop tracking the file but not delete it from your system use: git rm --cached filename
To untrack every file that is now in your .gitignore
:
First commit any outstanding code changes, and then, run this command:
git rm -r --cached .
This removes any changed files from the index(staging area), then just run:
git add .
Commit it:
git commit -m ".gitignore is now working"
To undo git rm --cached filename
, use git add filename
.
Make sure to commit all your important changes before running
git add .
Otherwise, you will lose any changes to other files.
Please be careful, when you push this to a repository and pull from somewhere else into a state where those files are still tracked, the files will be DELETED
To remove all files that do not match the paths listed in some path spec file (something that has the same format as a .gitignore file):
git rm --cached --ignore-unmatch -r --pathspec-from-file .ignorelist
Note: unlike .gitignore
, which can have new lines, .ignorelist
cannot have new lines because git
will complain about empty patterns not being valid path spec items.
Explanation:
-r
: to allow recursive removal when directories are involved--pathspec-from-file
: path to file containing the path specifications for files to be removed--ignore-unmatch
: tell git
to ignore any path specifications that do not have a matching cache hit (otherwise it will abort with an error on that path spec)