我有一个设置了子模块的项目。 一位同事偶然删除了目标文件夹并改为创建一个符号链接(指向项目文件夹之外),提交它。
现在我无法再恢复子模块,即使在删除链接并创建空目录之后也是如此。 .gitmodule和.git / config没有改变。 git submodule add和git submodule init不做任何事情。
我无法恢复有问题的提交,因为它还包含许多其他更改。
如何解决这个问题?
答案 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