不知道是不是虛擬機(jī)的問題耗跛,最近修改代碼后git倉(cāng)庫(kù)總崩潰,導(dǎo)致的結(jié)果就是很多時(shí)候自己剛修改的代碼不得不放棄攒发,最近找到一種比較好的解決方式调塌,鏈接如下:https://stackoverflow.com/questions/11706215/how-to-fix-git-error-object-file-is-empty
1.git倉(cāng)庫(kù)崩潰表現(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倉(cāng)庫(kù)崩潰后,常規(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可以查看倉(cāng)庫(kù)的狀態(tài)了,也就意味著git倉(cāng)庫(kù)恢復(fù)成功了撮慨。