git“fatal: loose object”錯誤解決辦法彙總
阿新 • • 發佈:2018-12-16
描述
不知道怎麼回事,最近連續出現了兩三次下面的錯誤,每次git pull的時候就會出現,網路搜尋了一下,類似的問題非常普遍,各有各的解決之道,隨記之。
錯誤資訊:
error: object file .git/objects/40/bda4e3b79c3d7bf598df31d9e68470f97a3f79 is empty
fatal: loose object 40bda4e3b79c3d7bf598df31d9e68470f97a3f79 (stored in .git/objects/40/bda4e3b79c3d7bf598df31d9e68470f97a3f79) is corrupt
解決辦法
這裡的解決辦法,主要針對存在未提交的程式碼的情況。下面的命令,全部在ubuntu下使用,win下要主要命令的不同。
(1)重新克隆法
這個在stackoverflow.com上,大家點讚的比較多。
注意事項:該方法會丟失你的本地未push的提交和改變,也會丟失所有stash,處理之後需要重新提交。foo為本地版本庫。
cp -R foo foo-backup
git clone [email protected]:foo foo-newclone
rm -rf foo/.git
mv foo-newclone/.git foo
rm -rf foo-newclone
(2)reflog法(未驗證)
這種方法暫時沒有嘗試,希望能用。
rm .git/objects/40/bda4e3b79c3d7bf598df31d9e68470f97a3f79
git fsck --full
git reflog
(3)fetch法 (未驗證)
特別注意:這個與上面第一種方法比較類似,但是國內的文件大多少了一步備份本地版本庫,導致自己的未push的工作丟失。
cp -R foo foo-backup //備份先 rm -fr .git git init git remote add origin [your-git-remote-url] git fetch git reset --mixed origin/master //國內文件大多把這裡改成了--hard,未提交徹底丟失 git branch --set-upstream-to=origin/master master
參考
http://stackoverflow.com/questions/4254389/git-corrupt-loose-object/13918515#13918515
http://862123204-qq-com.iteye.com/blog/1683315 --------------------- 作者:imfly 來源:CSDN 原文:https://blog.csdn.net/imfly/article/details/51857745 版權宣告:本文為博主原創文章,轉載請附上博文連結!