find .git/objects/ -size 0 -delete
Backup is recommended.
–
In general, fixing corrupt objects can be pretty difficult. However, in this case, we're confident that the problem is an aborted transfer, meaning that the object is in a remote repository, so we should be able to safely remove our copy and let git get it from the remote, correctly this time.
The temporary object file, with zero size, can obviously just be removed. It's not going to do us any good. The corrupt object which refers to it, d4a0e75..., is our real problem. It can be found in .git/objects/d4/a0e75.... As I said above, it's going to be safe to remove, but just in case, back it up first.
At this point, a fresh git pull should succeed.
...assuming it was going to succeed in the first place. In this case, it appears that some local modifications prevented the attempted merge, so a stash, pull, stash pop was in order. This could happen with any merge, though, and didn't have anything to do with the corrupted object. (Unless there was some index cleanup necessary, and the stash did that in the process... but I don't believe so.)
–
–
–
–
–
The only thing that worked for me was to delete the git repo and configure it again:
rm -rf .git
git remote set-url origin <repo-url>
what I do is:
shows what's in this repo, make sure you see a .git folder, (move first to root directory)
ls -a
remove the .git folder
sudo rm -r .git
make and move to a new dir where you can temporary store a new clone of the repo where you are working on.
cd ../
mkdir t007
cd t007
re-clone the repo where you are working on, and navigate to it
git clone cloneSshUrlOfGitRepo
cd nameOfRepo
move the frech .git folder from the just cloned repo to the repo where you had a corrupt object, and where you deleted the .git folder. (after this stap your old repo should be up and running again, because you replaced the corrupt .git folder with a new one who should be working).
mv .git ../../nameOfRepo
now you should be able to remove the new cloned repo (because you don't need it anymore, we already moved its working .git folder in the previus step)
cd ../
sudo rm -r nameOfRepo
now you can move back to your repo where you were working on before you had this issue.
cd ../nameOfRepo
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.