删除分支后测试 Git 回购大小减少

Test Git repo size reduction after deleting a branch

有什么方法可以测试删除几个分支将如何影响 git 存储库的大小。 我有一个 git 回购协议,其中包含 10 个活跃的分支和数百个功能(短期分支)。

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

我尝试过 BFG Repo Cleaner 等工具来删除不需要的历史记录,但我只减少了 1.4 到 1 GB,这还不够。

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

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

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

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

但是我认为这不如使用 BGF 存储库清理器删除大型二进制文件有帮助。如果您需要跟踪所述二进制文件,您应该为这些文件切换到 git-LFS。

你对 BGF 的体验似乎很奇怪,如果你正确清理你的 repo,我希望减少得更好。

我只是想 post 我遵循 A.M 时所采取的步骤。答案:

因为repo有将近600个运行ches,我想测试删除近350个的效果

  1. 我正常克隆了存储库。
  2. 我需要为所有 600 个 b运行ches 创建本地 b运行ches。我找到了一个脚本来做到这一点:
for i in `git branch -a | grep remote | grep -v HEAD | grep -v master`; do git branch --track ${i#remotes/origin/} $i; done
  1. 为了验证b运行ches的正确数量,我运行下面统计了本地b运行ches的数量。
git branch | wc -l
  1. 我们的 b运行ch 名称有一个命名约定(幸运的是),我想测试删除所有 b运行ches 除了那些以前缀开头的:main_.我能够使用以下脚本删除所有其他 b运行ches:
git branch | grep -v "main_" | xargs git branch -D

我运行再次执行第3步的命令,检查b运行ches的个数,也只是git branch,看b运行ch是否名字都对。

  1. 要删除我的遥控器,首先要获得所有遥控器的列表,我 运行:
git remote -v

在这种情况下,获取和推送的远程是 origin,要删除它:我 运行:

git remote rm origin

然后我再次 运行 git remote -v 没有返回任何内容,以检查删除是否成功。

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

在 运行 git gc 之后,repo 大小减少了 ~ 600 MB,git-sizer 显示了类似的减少。