114

First off, I'm new to Git.

I deleted a bunch of files locally on my Mac using Finder. I want the files that I deleted to no longer show in the current branch, but they do.

Any Git users know a command to update the index?

1

4 Answers 4

224

I think this would be a simpler way to do what you want:

git add . -A 

Then you would just do:

git commit -m "removed some files"

As noted above.

Sign up to request clarification or add additional context in comments.

5 Comments

Thank you. And I had just written alias in bash to do the above. Amazing.
If you added a file in the same "stage" git will assume a rename. Anything to do about that or should you commit those separately?
@KimPrince - According to kernel.org, "-A --all Like -u, but match <filepattern> against files in the working tree in addition to the index. That means that it will find new files as well as staging modified content and removing files that are no longer in the working tree."
@KimPrince git help add will tell you what -A means and lists all other switches as well.
This does a lot more than just removing deleted files. It adds all files that are changed in the directory so this is not really a satisfactory answer.
19

You can see deleted files, which are still 'tracked' with:

git ls-files --deleted

To delete files from a branch, you can do something like this:

git ls-files --deleted -z | xargs -0 git rm

From man git-rm:

Remove files from the index, or from the working tree and the index. git-rm will not remove a file from just your working directory. (There is no option to remove a file 13 only from the work tree and yet keep it in the index; use /bin/rm if you want to do that.)

Finally, to commit the "removal" do something like:

git commit -m "removed some files"

1 Comment

Then you need to commit the change - git commit -m "removed some files"
17

I don't know if this has been added to git since the previous answers, but I just used

git add -u
git commit -m "Removed some files"

to achieve the same thing.

1 Comment

This works for the listed use case, but this does not just add the deletion of the files. It adds all of the files that have been changed in any way, so this is not generally a good way to remove all deleted files unless that's the only changes you've made.
2
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch deletefile.name' --prune-empty --tag-name-filter cat -- --all
git commit -m "Removed deletefile.name"
git push origin master --force

Replace deletefile.name with the file to remove. For in-depth detailed explanation go through the nice article https://help.github.com/articles/remove-sensitive-data

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.