git - 删除分支后测试 Git 存储库大小减少
问题描述
有什么方法可以测试删除多个分支将如何影响该 git repo 的大小。我有一个 git repo,它有 10 个活跃的分支和数百个功能(短期分支)。
回购非常大,克隆速度很慢。GitLab 显示总大小为 1.4 GB,git-sizer显示 blob 总大小为 8.4 GB。
我已经尝试过使用BFG Repo Cleaner等工具来删除不需要的历史记录,但我只设法减少了 1.4 到 1 GB,这还不够。
我的策略将我的回购分成 2 份,并使用多个分叉来分隔工作流。我还将在 GitLab 中添加推送扩展和大小限制以停止推送垃圾。我们遇到了.rar、.zip、.jar文件、错误推送的个人备份等问题。但是我也想知道我是否可以保留我长期存在的分支的历史。所以我的问题:
- 如果我删除所有短暂的分支,是否可以看到大小会减少多少?
- 这可以在本地实现吗?
- 还是我只需将所有内容复制到 GitLab 上的测试存储库并删除此测试存储库上的分支?
解决方案
我只是想发布我在遵循 AM 答案时采取的步骤:https ://stackoverflow.com/a/57074193/1860867
因为 repo 有近 600 个分支,我想测试删除近 350 个分支的效果。
- 我像往常一样克隆了存储库。
- 我需要为所有 600 个分支机构创建本地分支机构。我找到了一个脚本来做到这一点:
for i in `git branch -a | grep remote | grep -v HEAD | grep -v master`; do git branch --track ${i#remotes/origin/} $i; done
- 为了验证正确的分支机构数量,我跑到下面来计算本地分支机构的数量。
git branch | wc -l
- 我们的分支名称有一个命名约定(幸运的是),我想测试删除除以 prefix: main_开头的所有分支之外的所有分支。我能够使用以下脚本删除所有其他分支:
git branch | grep -v "main_" | xargs git branch -D
我再次运行第 3 步中的命令来检查分支的数量是否也只是git branch
,看看分支名称是否都正确。
- 要删除我的遥控器,首先要获取所有遥控器的列表,我运行:
git remote -v
在这种情况下,获取和推送的遥控器是origin,要删除它:我跑了:
git remote rm origin
然后我再次运行git remote -v
它没有返回任何内容,以检查删除是否成功。
- 为了清理我的本地存储库(并确定删除本地分支后的大小减少),我运行了以下命令:
git reflog expire --expire=now --all && git gc --prune=now --aggressive
运行后git gc
,repo 大小减少了约 600 MB,git-sizer显示出类似的减少。
推荐阅读
- asp.net-mvc - IIS下运行web时上传的图片不能保存到文件夹,不能在文件夹中查看图片
- javascript - Gatsby 中的活动链接似乎被斜杠破坏了
- python - Django cassandra 搜索引擎
- django - 鹡鸰自定义图像标签
- spring-boot - Spring Boot Apache Camel(Red Hat Fuse)应用程序为 xml 定义的路由引发异常:javax.xml.bind.UnmarshalException:意外元素
- c# - Aysnc 方法仍然阻塞 ui 界面
- python - 由于新安装的 conda 无法找到库,docker build 间歇性失败
- javascript - JS用动画改变源图像
- python - 如果在 python 上打开具有特定 url 的窗口,则执行操作
- java - AuthenticationFaliedException:登录失败 IMAP java