我有一个关于删除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文件中的子模块条目将保留。感谢。
答案 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 83b7696,commit 5a1c824,commit 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"现在说明了。