1. 程式人生 > >git“fatal: loose object”錯誤解決辦法彙總

git“fatal: loose object”錯誤解決辦法彙總

描述

不知道怎麼回事,最近連續出現了兩三次下面的錯誤,每次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  版權宣告:本文為博主原創文章,轉載請附上博文連結!