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

时间:2016-05-02 12:02:29

标签: git git-submodules

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

2 个答案:

答案 0 :(得分:1)

你必须初始化&再次更新子模块,

git submodule init
git submodule update

它应该下载并更新当前的子模块代码。

如果仍然无法正常工作,请尝试删除子模块并使用

重新添加
git submodule add <params>

如果这不能解决它,请添加带有--force标志

的子模块
  

如果指定了--force,则将检出子模块(使用git checkout --force,如果适用),即使在包含的存储库的索引中指定的提交已经与子模块中检出的提交匹配

答案 1 :(得分:0)

我正在扩展CodeWizard的答案。

如果得到

致命 :. gitmodules中没有Submodul-Path'app / design / Foo / Bar'的URL 找到

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

如果您得到

致命:找不到子模块“ app / code / Foo / Bar”的存储库句柄。

那可能是因为您删除了.git / modules中的文件夹。

app / code / Foo / bar中的子模块 .git 文件只是一个“伪”文件,引用了 .git / modules 中的真实git存储库。它不是真正的存储库。如果将其打开,则会看到:

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

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