Skip to content

Instantly share code, notes, and snippets.

@jeffjohnson9046
Created August 11, 2015 21:02
Show Gist options
  • Select an option

  • Save jeffjohnson9046/80bc182db7ae2f4a6150 to your computer and use it in GitHub Desktop.

Select an option

Save jeffjohnson9046/80bc182db7ae2f4a6150 to your computer and use it in GitHub Desktop.
Remove unwanted files from a git repo AFTER adding a .gitignore. The files will remain on disk.
## I just ran into this after initializing a Visual Studio project _before_ adding a .gitignore file (like an idiot).
## I felt real dumb commiting a bunch of files I didn't need to, so the commands below should do the trick. The first two commands
## came from the second answer on this post: http://stackoverflow.com/questions/7527982/applying-gitignore-to-committed-files
# See the unwanted files:
git ls-files -ci --exclude-standard
# Remove the unwanted files:
git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached
# Commit changes
git commit -am "Removed unwanted files marked in .gitignore"
# Push
git push origin master # or whatever branch you're on
@SpeedRanger
Copy link

Thanks @jeffjohnson9046. And also to @OstenTV for the Windows version

@nouxinf
Copy link

nouxinf commented Jan 2, 2026

For Windows, if anyone needs it :)

git ls-files -ci --exclude-standard

REM Remove the unwanted files: 
FOR /F "tokens=*" %G IN ('git ls-files -ci --exclude-standard') DO git rm --cached "%G"

REM Commit changes
git commit -am "Removed unwanted files marked in .gitignore"

REM Push
git push origin master

For the second command a powershell verion would be:

git ls-files -ci --exclude-standard |
ForEach-Object { git rm --cached $_ }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment