我们的团队长时间不再使用子模块了,我们希望通过删除所有缓存的子模块来释放一些存储库空间。
我们只需要删除以下内容吗?
rm -rf .git/modules
或者有更推荐的方法吗?此外,如果可能,我们希望将删除推送到服务器。
注意:使用git 2.5.4和当前状态将所有内容合并到一个分支中。
注意:我们不记得旧提交中使用的子模块的个别名称。
答案 0 :(得分:18)
我在关于“不使用子模块”的问题中找出了一个可能的小混淆:是否还有未使用的子模块文件夹,或者这些文件夹是否已被删除,只留下了缓存?
嗯,我认为我们可以通过首先执行干净的删除过程来解决这两种情况,然后假设某些事情没有正确完成并执行手动清理。
How do I remove a submodule?中说明了删除一个子模块的必要步骤。但是为了回答这个问题,我们将立即删除所有子模块而不假设我们知道子模块的名称。
git submodule sync
git submodule update --init --recursive --remote
我不知道服务器同步。它可以在下次提交时自动完成,或者我们可能需要这些命令:
{{1}}
答案 1 :(得分:3)
使用git 2.7
1
这会更新git submodule deinit mysubmod
git rm mysubmod
git commit -m "Remove mysubmod"
git push
rm -rf .git/modules/mysubmod
和.gitmodules
,并删除.git/config
和mysubmod
。否则,如果想要在名为.git
的目录中包含某些内容,则会出现问题。
在这种情况下,只剩下最后一部分。由于子模块基本上只是指向其他存储库的指针,因此除非要删除那些被称为子模块的存储库,否则没有太多要清理的内容。使用存储库的旧提交可能会变得更加困难。