删除分支后测试Git存储库大小减少

时间:2019-07-17 10:17:04

标签: git bfg-repo-cleaner

有什么方法可以测试几个分支的删除将如何影响该git repo的大小。 我有一个带有10个活动分支和数百个功能(短期分支)的git repo。

存储库很大,克隆速度很慢。 GitLab显示的总大小为1.4 GB,git-sizer显示的Blob的总大小为8.4 GB。

我已经尝试使用BFG Repo Cleaner之类的工具来删除不需要的历史记录,但是我只能将容量减少1.4到1 GB,但这还不够。

我的策略将我的仓库分为2个部分,并且还使用多个分支来分离工作流。我还将在GitLab中添加推送扩展和大小限制,以停止推送垃圾邮件。我们在 .rar .zip .jar 文件,错误地推送个人备份等方面遇到了问题。 但是,我也想知道我是否可以保留我长期存在的分支机构的历史。 所以我的问题:

  1. 是否可以看到删除所有短寿命分支的大小会减少多少?
  2. 这可以在本地实现吗?
  3. 还是我只需要将所有内容复制到GitLab上的测试存储库并删除该测试存储库上的分支?

2 个答案:

答案 0 :(得分:0)

回答您的三个问题,我想是的,可以在本地检查此问题。 (取决于您的意思,如果我删除了所有短暂的分支,我会假设它们没有合并)。

您可以克隆您的存储库,为要保留的分支创建本地分支,删除远程服务器,然后进行gc。

但是,我认为使用BGF回购清除器删除大型二进制文件不会带来太大帮助。如果您需要跟踪所述二进制文件,则应将这些文件切换到git-LFS。

您使用BGF的经验似乎很奇怪,我希望如果您正确清洁回购协议,可以减少很多费用。

答案 1 :(得分:0)

我只想发布我遵循上午的步骤答案:https://stackoverflow.com/a/57074193/1860867

因为回购有近600个分支,所以我想测试删除近350个分支的效果。

  1. 我正常克隆了存储库。
  2. 我需要为所有600个分支机构创建本地分支机构。我找到了执行此操作的脚本:
for i in `git branch -a | grep remote | grep -v HEAD | grep -v master`; do git branch --track ${i#remotes/origin/} $i; done
  1. 要验证分支机构的正确数量,我跑到下面来计算本地分支机构的数量。
git branch | wc -l
  1. 幸运的是,我们的分支名称具有命名约定,我想测试删除所有以前缀 main _ 开头的分支。我可以使用以下脚本删除所有其他分支:
git branch | grep -v "main_" | xargs git branch -D

我再次在第3步中运行了该命令,以检查分支的数量是否也只有git branch,以查看分支名称是否正确。

  1. 要删除我的遥控器,首先要获得所有遥控器的清单,我跑了:
git remote -v

在这种情况下,用于提取和推送的遥控器是起源,要删除它:我运行了:

git remote rm origin

然后我再次运行git remote -v,该命令什么也没返回,以检查删除是否成功。

  1. 要清理我的本地存储库(并确定删除本地分支后的大小减小),我运行了命令:
git reflog expire --expire=now --all && git gc --prune=now --aggressive

运行git gc后,回购文件大小减少了约600 MB, git-sizer 显示了类似的减少。