如何删除Git子模块?为什么我不能git子模块rm模块名称?
当前回答
要删除添加的子模块,请使用:
REPOSITORY=blah@blah.com:repos/blah.git
MOD_DIR=lib/blah
git submodule add $REPOSITORY $MOD_DIR
Run:
git rm $MOD_DIR
就是这样。
对于旧版本的git(约为1.8.5,实际上甚至在2.26.2中),请使用:
git submodule deinit $MOD_DIR
git rm $MOD_DIR
git config -f .gitmodules --remove-section submodule.$MOD_DIR
其他回答
我创建了一个bash脚本来简化删除过程。它还检查回购中是否有未保存的更改,并请求确认。它已经在os x上进行了测试,如果知道它在普通linux发行版上是否也能正常工作,将会很有趣:
https://gist.github.com/fabifrank/cdc7e67fd194333760b060835ac0172f
在最新的git中,删除git子模块只需要4个操作。
删除.gitmodules中的相应条目阶段更改gitadd.gitmodules删除子模块目录git rm--cached<path_to_submodule>Commit git Commit-m“已删除子模块xxx”
我发现deinit对我很好:
git submodule deinit <submodule-name>
git rm <submodule-name>
从git文档:
解交织注销给定子模块,即删除整个子模块$名称git/config中的部分及其工作树。
删除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步不会产生任何需要提交的更改。
git子模块deinit<子模块路径>从.gitmodules中删除节git rm<子模块路径>删除需要从项目中删除的模块文件。将删除的文件添加到git并调用gitadd.gitmodules提交并推送
推荐文章
- 如何从远程Git存储库中提取并覆盖本地存储库中的更改?
- Github:导入上游分支到fork
- Git单次修订的日志
- Git在不改变提交时间戳的情况下进行改基
- VS 2017 Git本地提交数据库。每次提交时锁定错误
- 如何在过去的一些任意提交之间注入一个提交?
- 从GitHub克隆项目后拉git子模块
- GitHub上的分叉和克隆有什么区别?
- 递归地按模式添加文件
- 我如何使用notepad++(或其他)与msysgit?
- 如何将现有的解决方案从Visual Studio 2013添加到GitHub
- Git存储库中的悬垂提交和blob是什么?它们来自哪里?
- 我如何简单地从我最新的git提交创建一个补丁?
- Git显示“警告:永久添加到已知主机列表”
- 我如何检索一个回购的远程git地址?