2

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

现在,即使在删除链接并创建了一个空目录之后,我也无法再恢复子模块。.gitmodule 和 .git/config 没有改变。git submodule add 和 git submodule init 什么都不做。

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

如何解决这个问题?

4

2 回答 2

4

您需要恢复目录,因为它们在更改之前存储在您的存储库中。

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

将起作用的是:

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

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

这将恢复一个空目录,该目录实际上是索引中的一个特殊条目

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

于 2013-03-19T08:09:10.133 回答
1

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

git rm libs/routing
git submodule add ../librouting.git libs/routing
于 2013-03-19T16:16:58.500 回答