我有一个超级模块“研究”,其中包括一个子模块“模拟器”。
当我克隆模拟器存储库并执行 git log 时,我得到了这个
~/Simulator$ git log
commit abcd...
Date: Feb 1.......
........
当我克隆 Research 存储库,并在 Research/Simulator 中执行 git submodule update --init 并执行 git log 时,我得到了这个
~/Research/Simulator$ git log
commit efgh...
Date: Feb 2.......
........
因此,通过克隆 Research repo 并拉取子模块,与直接克隆 Simulator repo 相比,我得到了更新版本的模拟器......
我有另一个问题,我认为是由这个引起的。
我不得不将 git repos 移动到新服务器,当我测试克隆研究并从新服务器的 repo 中提取子模块时,我得到了这个,
~/Research_test$ git submodule update
Cloning into Simulator...
....
fatal: reference is not a tree: efgh...
Unable to checkout 'efgh...' in submodule path 'Simulator'
有趣的是,当我从旧服务器克隆研究并拉取子模块时,它成功拉取了模拟器。(好吧,就像我之前解释的那样有点奇怪)
我通过简单地复制存储库(裸)目录来迁移 repo
我的目标是
- 当我直接克隆模拟器时,它应该拉最新版本....
- “参考不是树”错误应该消失......
顺便说一句,Simualtor 的工作目录已被删除,所以我只有 repo 可以使用。