I added .gitignore to my project after I had everything commited. Now I want to run a command like:
git rm --cached *everything_listed_in_gitignore*
How can this be achieved? Thank you in advance.
I'm always using the following line to remove files listed in my .gitignore
:
grep -vP "^(#|\$)" .gitignore|sed "s/^\///"|xargs rm -f
This will find lines in .gitignore
that do not match (-v
option to grep) the regular expression ^(#|\$)
matching lines that start with #
(comments) or empty lines.
Then sed
will remove a forward slash /
at the start of the line.
The results are passed to rm -f
using xargs
, which you could replace with git rm --cached
Note:
Your .gitignore
file can contain entries like *.tmp
to ignore all .tmp
files throughout the project. The above command would only remove *.tmp
files from the root. Only full paths will be handled correctly.