我参考了这个:Git submodule head 'reference is not a tree' error
而且:git submodule tracking latest
可能我的问题略有不同。 (我假设它是相同的,但没有做正确的事......)
我想要我的git设置,如果我跑:
git clone -b master --recursive /path/to/main/repo.git
子模块 应始终克隆“master”
否则,在许多情况下,引用的提交不存在(子模块的分支)或“过时”导致克隆失败并显示错误:
fatal: reference is not a tree
我尝试设置主存储库以获取子模块主服务器:
git submodule add -b master /path/to/submodule.git
但克隆主要回购时:
git clone -b master --recursive /path/to/main/repo.git
引用的子模块提交不存在(未按预期获取master)
答案 0 :(得分:3)
因为子模块永远不会被分支检出 它总是在gitlink(special entry in the index)
记录的SHA1上签出你能做的是:
master
分支
请参阅" How to make an existing submodule track a branch" git submodule update --remote --recursive
以确保每个子模块都会针对各自的master
分支进行获取和更新。