我有一个 git 项目(repo1),包括一个子模块(repo2)。我想要实现的是使用我的子模块的旧提交(如 HEAD - 3)标记我的项目。
我尝试将子模块签出到我想要的提交,但签出是错误的,因为在我的项目中提交不会跟踪正确的修订。我尝试将我的子模块重置为我想要的提交,提交项目,然后拉出子模块并提交项目,这也是错误的,因为:
$ git submodule update
fatal: reference is not a tree: 2c3d1a5936aa9469ecc1442cd4b101e1bbd3aada
Unable to checkout '2c3d1a5936aa9469ecc1442cd4b101e1bbd3aada' in submodule path 'repo2'
什么是最好的——也是最好的——程序?
Git submodule head 'reference is not a tree' 错误给出了答案的开始,但它仍然链接 repo2 的 HEAD 而不是选择的提交......
假设现在标签已经完成,我如何告诉我的 repo1 将 repo2 设置为标签的正确状态:
git checkout 0.0.1
根据git submodule update,一个简单的
git submodule update
应该足够了。它不会将我的子模块签出到指定的提交。为什么 ?那是……错误吗?