描述git
不知道怎麼回事,最近連續出現了兩三次下面的錯誤,每次git pull
的時候就會出現,網絡搜索了一下,相似的問題很是廣泛,各有各的解決之道,隨記之。ubuntu
錯誤信息:網絡
error: object file .git/objects/40/bda4e3b79c3d7bf598df31d9e68470f97a3f79 is empty fatal: loose object 40bda4e3b79c3d7bf598df31d9e68470f97a3f79 (stored in .git/objects/40/bda4e3b79c3d7bf598df31d9e68470f97a3f79) is corrupt
解決辦法dom
這裏的解決辦法,主要針對存在未提交的代碼的狀況。下面的命令,所有在ubuntu下使用,win下要主要命令的不一樣。fetch
(1)從新克隆法url
這個在stackoverflow.com上,你們點讚的比較多。3d
注意事項:該方法會丟失你的本地未push的提交和改變,也會丟失全部stash,處理以後須要從新提交。foo爲本地版本庫。code
cp -R foo foo-backup git clone git@www.mydomain.de:foo foo-newclone rm -rf foo/.git mv foo-newclone/.git foo rm -rf foo-newclone
(2)reflog法(未驗證)blog
這種方法暫時沒有嘗試,但願能用。rem
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
我採用了第三種方法處理好了