有什么方法可以测试几个分支的删除将如何影响该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 文件,错误地推送个人备份等方面遇到了问题。 但是,我也想知道我是否可以保留我长期存在的分支机构的历史。 所以我的问题:
答案 0 :(得分:0)
回答您的三个问题,我想是的,可以在本地检查此问题。 (取决于您的意思,如果我删除了所有短暂的分支,我会假设它们没有合并)。
您可以克隆您的存储库,为要保留的分支创建本地分支,删除远程服务器,然后进行gc。
但是,我认为使用BGF回购清除器删除大型二进制文件不会带来太大帮助。如果您需要跟踪所述二进制文件,则应将这些文件切换到git-LFS。
您使用BGF的经验似乎很奇怪,我希望如果您正确清洁回购协议,可以减少很多费用。
答案 1 :(得分:0)
我只想发布我遵循上午的步骤答案:https://stackoverflow.com/a/57074193/1860867
因为回购有近600个分支,所以我想测试删除近350个分支的效果。
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
git branch | grep -v "main_" | xargs git branch -D
我再次在第3步中运行了该命令,以检查分支的数量是否也只有git branch
,以查看分支名称是否正确。
git remote -v
在这种情况下,用于提取和推送的遥控器是起源,要删除它:我运行了:
git remote rm origin
然后我再次运行git remote -v
,该命令什么也没返回,以检查删除是否成功。
git reflog expire --expire=now --all && git gc --prune=now --aggressive
运行git gc
后,回购文件大小减少了约600 MB, git-sizer 显示了类似的减少。