从存储库中删除所有Git缓存子模块

时间:2016-01-20 02:06:06

标签: git git-submodules

我们的团队长时间不再使用子模块了,我们希望通过删除所有缓存的子模块来释放一些存储库空间。

我们只需要删除以下内容吗?

rm -rf .git/modules

或者有更推荐的方法吗?此外,如果可能,我们希望将删除推送到服务器。

注意:使用git 2.5.4和当前状态将所有内容合并到一个分支中。

注意:我们不记得旧提交中使用的子模块的个别名称。

2 个答案:

答案 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/configmysubmod。否则,如果想要在名为.git的目录中包含某些内容,则会出现问题。

在这种情况下,只剩下最后一部分。由于子模块基本上只是指向其他存储库的指针,因此除非要删除那些被称为子模块的存储库,否则没有太多要清理的内容。使用存储库的旧提交可能会变得更加困难。