无法从Git仓库中删除子模块

19

我在一个Git仓库中有一个子项目,但无法删除。在GitHub的Web界面上,子模块显示为黑色(或灰色)文件夹图标,并且不能单击。

submodule in git repo

这个文件夹存在一些问题,即使我的本地代码中有该文件夹中的文件,并且我将其推送到我的存储库,更改也不会应用于GitHub远程。不知何故,这个文件夹被忽略了。我已检查它不在.gitignore文件中。

尝试移除子项目时,我使用了:

git submodule deinit submodule-name

但是它报错了:

错误:pathspec 'submodule-name' 没有匹配到任何git已知的文件。您是否忘记执行 'git add'?

这里出了什么问题?


1
尝试以这种方式移除子模块。 - halex
1
参考资料:Github图标可以在此处找到:https://github.com/styleguide/css/7.0 蓝色图标使用类.octicon-file-directory,灰色图标使用.octicon-file-submodule。因此,我猜测这与子模块有关。 - eckes
一开始我甚至不知道带有不同图标的文件夹是子模块。我对此完全陌生。 - Geek
您的问题说明你发现它是一个子模块,而您的答案也表示该问题是一个重复的问题。 - random
@random 这是一个疑问,即它是否为子模块,因此我尝试了一个命令(在问题中提到)。但那并没有起作用,所以我认为它可能是子模块,也可能不是。其次,我的问题并没有说它是子模块,你编辑后让它听起来像是。请考虑我的论点重新审查我的旧问题。 - Geek
问题中仍然包含您对子项目的原始引用,但同时增加了您选择在答案中包含的新子模块的引用。 - random
2个回答

37
如果 git submodule deinit 失败(可能是因为 .gitmodules 中没有列出该子模块),尝试至少删除 特殊条目索引 中:
git rm --cached submodule-name
git commit -m "Remove submodule entry"
git push

此时在 GitHub 端应该会看不见那个灰色的文件夹。


1
fatal: pathspec 'submodule-name' did not match any files - user4964330
@frageDE 请提出一个新问题,并提供所有相关细节(操作系统版本,git版本等)。 - VonC
git push无法工作,因为它需要一个origin。我该如何让它工作? - HarshSharma
@HarshSharma 在第一次推送时指定源:git push -u origin myBranch。请参阅“为什么需要显式推送新分支? - VonC

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接