tags:

views:

51

answers:

3

When I run git status, I have a bunch of lines of the form

deleted:    dir/file.js

I can remove each of these individually with git checkout -- dir/file.js, but there must be a less painstaking way to do so. (And yes, I know I should've used git rm in the first place...)

[Update: As Mark points out below, git checkout -- actually restores a deleted file, whereas I'd thought that it deleted it from the git index. I was a little baffled, because when you run git status, it says:

use "git checkout -- <file>..." to discard changes in working directory

To me, "discard changes" doesn't mean "restore a file you deleted," but in git terminology I suppose this makes sense.]

A: 

You can still git rm after the fact, but if you want, you can restore all your changed files (including deletions) to the last revision with git reset --hard

rampion
+1  A: 

So, do you want to commit the deletion of those files? Then use

git add -u
git commit
Roman Cheplyaka
+2  A: 

As rampion points out, you can still use git rm to stage the deletion of files that have already been deleted in your working copy (e.g. just git rm dir/file.js in your case.) If you have a lot of these files listed as "deleted:" under "Changed but not updated", I would first check that git ls-files --deleted produces a list of these files, and, if so, delete them with:

git ls-files --deleted -z | xargs -0 git rm
Mark Longair
Thanks, that works perfectly! I'm going to have to alias it.
Trevor Burnham