git - 为什么 git 无法为给定的提交获取特定的有效子模块以及如何修复它?

标签 git git-submodules git-commit

我有一个 git repo 其中有另一个作为 submodule依赖。在我项目的根目录中(.git.gitsubmodules 等所在的位置)我调用了

git submodule update

失败并显示以下消息:

Fetched in submodule path 'src/framework', but it did not contain cc8c38e9d853491c672452d8dbced4666fc73ec8. Direct fetching of that commit failed.

哪里src/framework是我的项目 ( PROJECT_ROOT/src/framework ) 的一个子目录,应该是第三方 repo 所在的位置。给定的提交哈希是有效的。

我也试过git clone --recursive <my-repo>但它也失败了。

我的.gitmodules的内容是

[submodule "src/framework"]
        path = src/framework
        url = git@gitlab-blah-internal.de:gh/framework.git

除此之外,我还必须注意以下重要事实:由于最近更新了 framework repo 我的代码中断,因此我真的需要检索它的特定版本,在那里一切正常。

最佳答案

克隆后运行此命令(并收到错误)解决了我的问题:

git submodule update --force --recursive --init --remote

当然这不是一个好的解决方案。最好找到并解决根本问题,但如果有人赶时间,这对我有用。

关于git - 为什么 git 无法为给定的提交获取特定的有效子模块以及如何修复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42417294/

相关文章:

git - * core.excludesfile 中的 war 导致 git add 忽略 *.p12 文件

git - 为什么 Gerrit 显示的更改数量与 git 不同?

git - 忽略当前目录中的文件但排除同名目录

git - 如何 `git submodule add` 现有子存储库?

git 在子模块中添加远程

git - 我如何只提交一些文件?

git - 为什么需要 git pull 来更新(不同的)分支(将分支移动到最新的提交而无需 git pull)?

git - 如何将 git 子模块恢复到它的提交版本?

git - 如何更改 git 提交消息中的默认注释?

git - BitBucket:提交和问题之间的交叉引用不起作用