在我的项目中,git/modules文件夹被删除。现在我可以将父分支重置为其他版本,但子模块更新不起作用。
我收到的错误:
fatal: Not a git repository: ../.git/modules/abc.
Unable to find current revision in submodule path 'abc'
如何恢复已删除的文件夹并使子模块与父分支保持一致。
回购结构如下:
parent_folder---|---abc
|---def
abc和def是子模块
您必须初始化&再次更新子模块,
git submodule init
git submodule update
它应该下载并更新当前的子模块代码。
如果它仍然不起作用,尝试删除子模块,并使用再次添加它
git submodule add <params>
如果这不能解决问题,请添加带有--force
标志的子模块
如果指定了
--force
,子模块将被签出(如果合适,使用gitcheckout--force),即使在包含存储库的索引中指定的提交已经与子模块中签出的提交匹配。
我正在扩展CodeWizard的答案。
如果你得到
致命:.gitmodules中的子模块路径"app/design/Foo/Bar"没有URL找到
然后执行git rm app/design/Foo/Bar
或git rm --cached app/design/Foo/Bar
,然后重试。
如果你得到
致命:找不到子模块"app/code/Foo/Bar"的存储库句柄。
那么这可能是因为您删除了.git/modules.中的文件夹
app/code/Foo/bar中的子模块.git文件只是一个"伪"文件,它引用了.jit/modules中的真实git repo。它不是一个真实的存储库。如果你打开它,你会看到:
gitdir: ../../../../.git/modules/app/code/Foo/Bar
因此,只需删除文件夹"app/code/Foo/Bar",然后重试。