git loose object 解決

描述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

我採用了第三種方法處理好了

相關文章
相關標籤/搜索