如何删除Git子模块?为什么我不能git子模块rm模块名称?
当前回答
我刚刚找到了.submodule(忘记了确切名称)隐藏文件,它有一个列表。。。你可以用这种方式逐个删除它们。我刚刚有一个,所以我删除了它。很简单,但它可能会搞乱Git,因为我不知道子模块是否附加了什么。到目前为止,除了libetpan通常的升级问题外,似乎还可以,但这(希望)是无关的。
注意到没有人发布手动擦除,因此添加
其他回答
您可以使用别名自动化其他人提供的解决方案:
[alias]
rms = "!f(){ git rm --cached \"$1\";rm -r \"$1\";git config -f .gitmodules --remove-section \"submodule.$1\";git config -f .git/config --remove-section \"submodule.$1\";git add .gitmodules; }; f"
将其放入git配置中,然后可以执行:git rms path/to/submodule
我创建了一个bash脚本来简化删除过程。它还检查回购中是否有未保存的更改,并请求确认。它已经在os x上进行了测试,如果知道它在普通linux发行版上是否也能正常工作,将会很有趣:
https://gist.github.com/fabifrank/cdc7e67fd194333760b060835ac0172f
我不得不进一步执行John Douth的步骤,并将其cd到子模块的目录中,然后删除Git存储库:
cd submodule
rm -fr .git
然后,我可以将文件作为父Git存储库的一部分提交,而无需对子模块的旧引用。
以下是我所做的:
1.)从.gitmodules文件中删除相关部分。您可以使用以下命令:
git config -f .gitmodules --remove-section "submodule.submodule_name"
2.)准备.gitmodules更改
git add .gitmodules
3.)从.git/config中删除相关部分。您可以使用以下命令:
git submodule deinit -f "submodule_name"
4.)删除gitlink(无尾斜杠):
git rm --cached path_to_submodule
5.)清理.git/模块:
rm -rf .git/modules/path_to_submodule
6.)承诺:
git commit -m "Removed submodule <name>"
7.)删除现在未跟踪的子模块文件
rm -rf path_to_submodule
project dir: ~/foo_project/
submodule: ~/foo_project/lib/asubmodule
- - - - - - - - - - - - - - - - - - - - - - - - -
run:
1. cd ~/foo_project
2. git rm lib/asubmodule &&
rm .git/modules/lib/asubmodule &&
git submodule lib/asubmodule deinit --recursive --force
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别