删除后git子模块无法正常工作

时间:2013-03-18 17:38:34

标签: git git-submodules

我有一个设置了子模块的项目。 一位同事偶然删除了目标文件夹并改为创建一个符号链接(指向项目文件夹之外),提交它。

现在我无法再恢复子模块,即使在删除链接并创建空目录之后也是如此。 .gitmodule和.git / config没有改变。 git submodule add和git submodule init不做任何事情。

我无法恢复有问题的提交,因为它还包含许多其他更改。

如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

您需要恢复在更改之前存储在repo 中的目录。

重新创建这些子模块根目录将不起作用。

将起作用:

git checkout master@{2 days ago} -- path/to/submodule/directory

(例如,如果您知道子模块在2天前工作)

这将恢复索引中实际为 special entry 的空目录。

然后git submodule update --init将恢复其内容。

答案 1 :(得分:1)

解决方案是删除子模块目标目录并重新添加子模块:

git rm libs/routing
git submodule add ../librouting.git libs/routing