删除git子模块的问题

时间:2014-04-24 14:10:44

标签: git

我有一个关于删除git子模块的问题。我正在使用git组织我的配置文件和vim包,将vim包作为子模块。现在我正在尝试删除子模块(根据说明here,但我没有成功。

--git submodule deinit -f vim/bundle/snipmate-snippets
Submodule work tree 'vim/bundle/snipmate-snippets' contains a .git directory
(use 'rm -rf' if you really want to remove it including all of its history)

所以我尝试rm -rf ...

--git rm -rf vim/bundle/snipmate-snippets
error: the following submodule (or one of its nested submodules)
uses a .git directory:
    vim/bundle/snipmate-snippets
(use 'rm -rf' if you really want to remove it including all of its history)

我做错了什么?显然只是像git那样rm -rf告诉我不够好,因为.gitmodules文件中的子模块条目将保留。感谢。

2 个答案:

答案 0 :(得分:18)

你需要rm -rf没有git:

rm -rf vim/bundle/snipmate-snippets

然后你可以去掉子模块:

git submodule deinit vim/bundle/snipmate-snippets

答案 1 :(得分:2)

您已经不再使用Git 2.12(2017年第一季度)

获得此错误消息

请参阅commit 55856a3(2016年12月27日)和commit 83b7696commit 5a1c824commit bd26756(2016年12月20日)Stefan Beller (stefanbeller)(由Junio C Hamano -- gitster --合并于commit 3ccd681,2017年1月18日)

  

rm:在删除前吸收子模块git dir

     

" git rm"用于在其子工作树中嵌入了自己的git存储库时拒绝删除子模块   它学会了将存储库移到超级项目的$GIT_DIR/modules/,并允许删除子模块(只要有   将不会失去局部修改,即)。

     

删除子模块时,我们需要保留实际的git目录,   这样我们就不会在那里和后来的结账时失去局部变化   子模块我们不需要再次克隆它。

     

现在该功能可用于吸收a的git目录   子模块,重写git-rm中的检查不抱怨,而是重新定位超级项目中的git目录。

这就是新测试" rm of a populated nested submodule with a nested .git directory fails even when forced"现在说明了。