git倉庫崩潰問題


不知道是不是虛擬機(jī)的問題,最近修改代碼后git倉庫總崩潰,導(dǎo)致的結(jié)果就是很多時(shí)候自己剛修改的代碼不得不放棄,最近找到一種比較好的解決方式,鏈接如下:https://stackoverflow.com/questions/11706215/how-to-fix-git-error-object-file-is-empty

1.git倉庫崩潰表現(xiàn)

dengwen@ubuntu:~/project_DW/selog$ git status
error: object file .git/objects/a9/761932a220991b0490c2715f218f814d39b876 is empty
error: object file .git/objects/a9/761932a220991b0490c2715f218f814d39b876 is empty
fatal: loose object a9761932a220991b0490c2715f218f814d39b876 (stored in .git/objects/a9/761932a220991b0490c2715f218f814d39b876) is corrupt

2.常規(guī)解決方案

git倉庫崩潰后,常規(guī)的解決方案是在其他目錄git clone之前版本的項(xiàng)目,然后將
當(dāng)前版本的項(xiàng)目拷貝過去進(jìn)行覆蓋,再進(jìn)行提交,但是這樣做的結(jié)果就是可能會(huì)丟失部分git commit信息,除此之外基本沒什么問題。

3.推薦方法

這種方法的好處在于可以恢復(fù)git log信息,同時(shí)也不用重新clone項(xiàng)目、切換分支、替換等操作,相對(duì)來說,git管理的完整度和效率會(huì)更高,具體步驟如下:

  • (1)刪除全部空文件: 注意在.git目錄下進(jìn)行
dengwen@ubuntu:~/project_DW/selog/.git$ find . -type f -empty -delete -print
./objects/0d/e32d3b8d0399414c0c8fc47a56069e9821615a
./objects/14/540f9dda3c30044e2dbe4629d22c715145f212
./objects/19/b98c74bc6c2e372887af410301a0a80495725c
./objects/55/14f9022e0e39a29d0e25cdf15cecac1f2f479c
./objects/84/0103bdd9538473baab19520eda11b88b40c953
./FETCH_HEAD
  • (2)獲取最后兩條reflog:注意自己要恢復(fù)的分支,此處為develop
dengwen@ubuntu:~/project_DW/selog$ tail -n 2 .git/logs/refs/heads/develop
41867ca4ab8d60979e804ee7f4640a2e9231d96b f815821a9c4e4833be898dace675916f3cad0124 dengwen <15680482464@163.com> 1539335482 +0800        commit: add manage
  • (3)恢復(fù)對(duì)應(yīng)的日志
    由上一步我們知道最新的日志節(jié)點(diǎn)為f815821a9c4e4833be898dace675916f3cad0124,我們可以查看這個(gè)節(jié)點(diǎn)的信息:
dengwen@ubuntu:~/project_DW/selog$ git show f815821a9c4e4833be898dace675916f3cad0124
commit f815821a9c4e4833be898dace675916f3cad0124
Author: dengwen <15680482464@163.com>
Date:   Fri Oct 12 17:11:22 2018 +0800

    add manage

接下來要做的就是恢復(fù)日志,同樣,需要注意分支和日志節(jié)點(diǎn)。

dengwen@ubuntu:~/project_DW/selog$ git update-ref develop f815821a9c4e4833be898dace675916f3cad0124
  • (4)提交最新的git log
    執(zhí)行上述步驟后,用git status可以查看倉庫的狀態(tài)了,也就意味著git倉庫恢復(fù)成功了。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • git branch 查看本地所有分支 git status 查看當(dāng)前狀態(tài) git commit 提交 git b...
    猿萬閱讀 5,397評(píng)論 1 45
  • 1,查看所有遠(yuǎn)程分支:%git branch -r 2, 拉取遠(yuǎn)程分支并創(chuàng)建本地分支git checkout -...
    will666閱讀 2,198評(píng)論 0 18
  • 一、 Git 常用命令速查 git branch 查看本地所有分支 git status 查看當(dāng)前狀態(tài) git c...
    LOVE_晴天閱讀 2,412評(píng)論 0 10
  • 一些想法在腦中迎迎繞繞了好久,頹廢的姿態(tài)也持續(xù)了一段時(shí)間,自己竟?jié)u漸喜歡上這種生活節(jié)奏,不知道是好是壞,不知道怎么...
    clannad月閱讀 228評(píng)論 0 0
  • 先說思考的結(jié)果吧,我認(rèn)為內(nèi)容沒有意義的日更在慣性養(yǎng)成的初期是有意義的,但是慣性養(yǎng)成后就沒有意義了。 在慣性養(yǎng)成的初...
    藍(lán)藻依依閱讀 414評(píng)論 0 0

友情鏈接更多精彩內(nèi)容