如何设置子模块,以便git clone --recursive总是掌握子模块

时间:2016-02-15 06:42:05

标签: git github git-submodules git-clone

我参考了这个: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)

1 个答案:

答案 0 :(得分:3)

因为子模块永远不会被分支检出 它总是在gitlinkspecial entry in the index

记录的SHA1上签出

你能做的是:

  • 确保子模块设置为遵循master分支 请参阅" How to make an existing submodule track a branch"
  • 执行git submodule update --remote --recursive以确保每个子模块都会针对各自的master分支进行获取和更新。