因没法追溯的同步操做错误或工程文件错误,形成Git 同步时报错:git
Could not get all refs. libgit2 returned: corrupted loose reference filefetch
因对git相关配置不熟悉,形成手动修复时错改文件,越错越离谱,因此在解决问题前须要清楚Git相关配置文件信息及其做用。url
1. 在工程根目录有.git隐形文件夹,有的可见有的不可见,不可见的许设置为可见。3d
2. 打开.git后文件结构以下:blog
关键文件夹如图rem
config配置信息get
refs 最新更改SHA1信息同步
logs更改信息历史记录it
3. 对比查看refs下和logs下同名文件夹及文件内容:io
很是简单一看就懂,重要的是各个文件夹下文件信息要一致(通常只看最新信息),若出现错误,手动修复到上一条未出现错误的时候。
4. 确认上述文件信息正确后,git pull 会发现报错:loose object,这是由于系统生成的object文件因手动修改而找不到对应SHA1,须要进行文件清除和从新remote操做
对于fatal: loose object...is corrupt的解决方法
错误描述:
error: object file .git/objects/9a/83e9c5b3d697d12a2e315e1777ceaf27ea1bab is empty
fatal: loose object 9a83e9c5b3d697d12a2e315e1777ceaf27ea1bab (stored in .git/objects/9a/83e9c5b3d697d12a2e315e1777ceaf27ea1bab) is corrupt
解决方法:
$ rm -fr .git
$ git init
$ git remote add origin your-git-remote-url
$ git fetch
$ git reset --hard origin/master
$ git branch --set-upstream-to=origin/master master