报错背景:
gitlab流水线,用我的开发机构建镜像,拉取代码时,报错fatal: reference is not a tree。
查看日志是checkout分支时报错。检查了下,目标commit ID是存在的,报错截图如下:
解决方案:
参考:https://stackoverflow.com/questions/16363909/git-checkout-throws-fatal-reference-is-not-a-tree
- 把代码目录删除掉,
- clone这个库,但只clone最近的1次提交:
- git clone git库地址 --depth=1
- 然后重新用流水线打包镜像就可以了
原因分析:
其实没有太确定原因是什么。
做的尝试:
- 在自己开发机上,可以git checkout出目标分支。
- 从目标分支复制出一个新的分支,流水线构建时也有该问题。
- 删除代码库重新clone也会有上述问题。