背景:
有一个项目的源码是使用gitblit管理的,在迁移时在本地使用push推送到新的gitlab时报nullSha1: contains entries pointing to null sha1,具体报错信息如下:
原因和解决思路:
项目中存在包含指向null sha1的条目,需要找到这个异常条目所在的根文件夹,然后清理这些指向null sha1的项目
解决步骤:
1、找到指向null sha1的条目所属的异常对象的id,即上图中的af1768d1c48ed2117f31416a1a4896eede703d85
2、根据这个异常对象,找到这个异常对象的根文件夹
git ls-tree af1768d1c48ed2117f31416a1a4896eede703d85
3、清理aaaaaa根文件夹下的null sha1
git filter-branch --index-filter "git rm -r --cached --ignore-unmatch aaaaaa" --prune-empty --tag-name-filter cat -- --all
注意:aaaaaa使用实际找到的根文件夹替换
4、约等2分钟后就能清理null sha1,然后就可以正常push了