如何删除Git子模块?为什么我不能git子模块rm模块名称?


当前回答

您必须删除.gitmodules和.git/config中的条目,并从历史记录中删除模块的目录:

git rm --cached path/to/submodule

如果你在git的邮件列表上写东西,很可能有人会为你编写一个shell脚本。

其他回答

我刚刚找到了.submodule(忘记了确切名称)隐藏文件,它有一个列表。。。你可以用这种方式逐个删除它们。我刚刚有一个,所以我删除了它。很简单,但它可能会搞乱Git,因为我不知道子模块是否附加了什么。到目前为止,除了libetpan通常的升级问题外,似乎还可以,但这(希望)是无关的。

注意到没有人发布手动擦除,因此添加

删除git子模块

要删除git子模块,需要以下4个步骤。

删除.gitmodules文件中的相应条目。条目可能如下所述

[submodule "path_to_submodule"]
    path = path_to_submodule
    url = url_path_to_submodule

阶段更改gitadd.gitmodules删除子模块目录git-rm-cached<path_to_submodule>。提交gitcommit-m“Removed submodule xxx”并推送。

下面提到的另外两个步骤需要完全清除本地克隆副本中的子模块。

删除.git/config文件中的相应条目。条目可能如下所述

[submodule "path_to_submodule"]
    url = url_path_to_submodule

执行rm-rf.git/modules/path_to_submodule

第5步和第6步不会产生任何需要提交的更改。

除了这些建议之外,我还必须rm-Rf.git/modules/path/to/submodule,才能添加一个同名的新子模块(在我的例子中,我用原来的fork替换了一个fork)

我发现deinit对我很好:

git submodule deinit <submodule-name>    
git rm <submodule-name>

从git文档:

解交织注销给定子模块,即删除整个子模块$名称git/config中的部分及其工作树。

您必须删除.gitmodules和.git/config中的条目,并从历史记录中删除模块的目录:

git rm --cached path/to/submodule

如果你在git的邮件列表上写东西,很可能有人会为你编写一个shell脚本。