git子模块更新在一台计算机上失败并出现错误,但在另一台计算机上运行

Gau*_*nha 11 git git-submodules

我创建了一个git子模块并将其推送到我们的主存储库.这很好用,我可以通过浏览器看到存储库中的子模块.

为了测试它工作正常,我试图得到源是一个新的构建树.首先我跑了git submodule init然后git submodule update <submodule-name>.

这失败了,错误:

error: pathspec 'x/mypkg' did not match any file(s) known to git. Did you forget to 'git add'
Run Code Online (Sandbox Code Playgroud)

我尝试添加到.gitmodules子模块的URL但没有运气.

Sim*_*ast 22

在尝试更新不在索引中的子模块时,我也使用TortoiseGit收到此错误.也就是说,它们存在.gitmodules但尚未正确添加到存储库中.

解决方案是使用中指定的路径手动重新添加它们.gitmodules.您可以使用TortoiseGit UI或在命令行上为每个模块运行它...

git submodule add <url> <path>
Run Code Online (Sandbox Code Playgroud)

重新添加git子模块

(我意识到这可能不是原版海报的解决方案,但希望它可以帮助其他人用Google搜索.)


Hig*_*ife 5

这可能是因为您或团队中的某人的子模块中的更改尚未发布(已提交,但尚未推送到远程服务器)。然后,他们发布了超级项目,并引用了git服务器上不存在的子模块中的git commit。所以git试图下拉一个找不到的特定子模块git commit ID。

如果更改位于您计算机上或其他计算机上其他位置的存储库中,则会是这种情况。

要解决该问题,请转到引用该子库更改并将其发布(推送)到服务器的存储库。或更改子模块以指向其他提交ID。