gitcachingversion-controlgitignoregit-rm

Ignore files that have already been committed to a Git repository


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?


Solution

  • 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: