如何删除Git子模块?为什么我不能git子模块rm模块名称?
当前回答
使用Magit的简单解决方案
如果您在Emacs下使用Magit,则可以执行以下操作:
转到项目根目录,然后
M-x,magit列表子模块
then
M-x,删除magit子模块
系统将询问您要删除哪个子模块。
就是这样!
(我的Magit版本是v3.3.0)
其他回答
我不得不进一步执行John Douth的步骤,并将其cd到子模块的目录中,然后删除Git存储库:
cd submodule
rm -fr .git
然后,我可以将文件作为父Git存储库的一部分提交,而无需对子模块的旧引用。
2012年12月我正在做的事情(结合了这些答案中的大部分):
oldPath="vendor/example"
git config -f .git/config --remove-section "submodule.${oldPath}"
git config -f .gitmodules --remove-section "submodule.${oldPath}"
git rm --cached "${oldPath}"
rm -rf "${oldPath}" ## remove src (optional)
rm -rf ".git/modules/${oldPath}" ## cleanup gitdir (optional housekeeping)
git add .gitmodules
git commit -m "Removed ${oldPath}"
如果你想删除子模块而不从本地文件系统中删除文件夹,我可以这样做:
MOD=example
git rm --cached -f apps/$MOD
git config -f .gitmodules --remove-section submodule.$MOD
这对我有用。上面的答案在终端中显示了这一点,没有发生其他事情
'fatal: not removing 'demolibapp' recursively without -r'
demolibapp是我要删除的子模块名称git子模块deinit分解git rm—缓存的demolibapp-rrm-rf.git/modules/demolibappgit add--全部gitcommit-m“删除额外的子模块”数字推送rm-rf脱模剂
对于数字2.17及以上,它只是:
git submodule deinit -f {module_name}
git add {module_name}
git commit
推荐文章
- Visual Studio Code无法检测已安装的Git
- 强制LF eol在git的回购和工作副本
- Git:在裸库中更改活动分支的正确方法?
- 删除git中的分支是否会将其从历史记录中删除?
- 防止在GitHub上推送到master ?
- 根据Git,谁是“我们”,谁是“他们”?
- git如何合并后樱桃采摘工作?
- Git搜索单个文件历史记录中的字符串
- Git命令显示所有(轻量级)标签创建日期
- Gitignore并没有忽视文件夹
- 什么时候用。git/info/exclude代替。gitignore来排除文件?
- 如何告诉git忽略个别行,即gitignore为特定行代码
- “git diff——耐心”是什么意思?
- 我如何在GitHub中为其他人的代码做出贡献?
- 签出旧的提交并使其成为新的提交