Reputation: 49339
I use git annex to manage a large collection of video files. Instead of typing,
git annex add .
I managed to,
git add .
Now I ended up with a huge repo. How can I remove the files from git (already pushed to other 4 repos) re add them with annex. I also need to remove them from .git directory and re add them using git annex?
Upvotes: 1
Views: 525
Reputation: 4557
I read this answer somewhere at internet written by the user Rhubarb
You need :
git rm --cached <added_file_to_undo>
because :
When I was new this, I first tried
git reset .
(to undo my entire initial add), only to get this (not so) helpful message:
fatal: Failed to resolve 'HEAD' as a valid ref.
It turns out that this is because the HEAD ref (branch?) doesn't exist until after the first commit. That is, you'll run into the same beginner's problem as me if your workflow, like mine, was something like:
cd to my great new project directory to try out Git, the new hotness
git init
git add .
git status
... lots of crap scrolls by ...
=> Damn, I didn't want to add all of that.
google "undo git add"
=> find Stack Overflow - yay
git reset .
=> fatal: Failed to resolve 'HEAD' as a valid ref.
It further turns out that there's a bug logged against the unhelpfulness of this in the mailing list.
And that the correct solution was right there in the Git status output (which, yes, I glossed over as 'crap)
...
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
...
And the solution indeed is to use git rm --cached FILE.
Note the warnings elsewhere here - git rm deletes your local working copy of the file, but not if you use --cached. Here's the result of git help rm:
--cached Use this option to unstage and remove paths only from the index. Working tree files, whether modified or not, will be left.
I proceed to use
git rm --cached
.
to remove everything and start again. Didn't work though, because while add . is recursive, turns out rm needs -r to recurse. Sigh.
git rm -r --cached
.
Okay, now I'm back to where I started. Next time I'm going to use -n to do a dry run and see what will be added:
git add -n .
I zipped up everything to a safe place before trusting git help rm about the --cached not destroying anything (and what if I misspelled it).
Upvotes: 1
Reputation: 433
You can remove the files from your git repo without deleting them from your disk by using rm
with the --cached
flag:
git rm --cached file.zip
You can also remove entire folders:
git rm -r --cached folder
Upvotes: 0