Skip to content

Instantly share code, notes, and snippets.

@jeffjohnson9046
Created August 11, 2015 21:02
Show Gist options
  • Save jeffjohnson9046/80bc182db7ae2f4a6150 to your computer and use it in GitHub Desktop.
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
@hqn-scl
Copy link

hqn-scl commented Feb 29, 2020

Beautiful and perfect. Forked it for reference.

@VPavliashvili
Copy link

Thank you so much, this is what I was looking for

@ErinGe
Copy link

ErinGe commented Mar 29, 2021

Thanks a lot, really helpful!!!

@MightyOwler
Copy link

This is genius! Thank you!

@GlavS
Copy link

GlavS commented Nov 15, 2022

I would give 100 stars if I could... >_<
Thank you!!!

@ktMcD
Copy link

ktMcD commented Dec 15, 2022

You posted this more than six years ago and people are still benefitting from your efforts. Thank you so very much. If you were my neighbor I'd bake you something.

@OstenTV
Copy link

OstenTV commented Mar 8, 2024

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

@cartesian-plane
Copy link

This can also be done via the web interface.
You have to open the file, then click the ... at the top right for the delete option.

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