如何恢复已删除的 .git/modules 文件夹

How to recover deleted .git/modules folder

在我的项目中。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 标志的子模块

If --force is specified, the submodule will be checked out (using git checkout --force if appropriate), even if the commit specified in the index of the containing repository already matches the commit checked out in the submodule.

我正在扩展 CodeWizard 的回答。

如果你得到

fatal: No URL for Submodul-Path 'app/design/Foo/Bar' in .gitmodules found

然后执行git rm app/design/Foo/Bargit rm --cached app/design/Foo/Bar再试。

如果你得到

fatal: Could not find repository-handle for Submodul 'app/code/Foo/Bar'.

那可能是因为你删除了.git/modules.

中的文件夹

.git 文件 app/code/Foo/bar 只是一个 "fake" 文件,它引用了真正的 git 仓库.git/modules。它不是真正的存储库。如果你打开它,你会看到:

gitdir: ../../../../.git/modules/app/code/Foo/Bar

所以只需 删除 文件夹“app/code/Foo/Bar”,然后重试。