如何在Bitbucket远程仓库触发垃圾回收(GC)
解决Bitbucket远程仓库体积过大的问题
先彻底清理本地仓库再触发远程GC
普通git gc可能不够彻底,试试执行git gc --aggressive --prune=now,这个命令会深度清理所有过期的Git对象。之后推送一个空提交触发远程仓库的GC检查:git commit --allow-empty -m "Trigger remote GC" git push如果有仓库管理员权限,直接去Bitbucket仓库设置的「Advanced」选项里,找到「Start repository cleanup」按钮手动触发远程垃圾回收,这比空提交更直接。
清理远程仓库的废弃分支和标签
远程仓库里堆了一堆废弃分支、旧标签是常见的体积膨胀原因:- 用
git branch -a列出所有本地和远程分支,找出已经没用的废弃分支(比如已合并的feature分支、旧测试分支)。 - 删除远程分支:
git push origin --delete <废弃分支名>。 - 用
git tag列出所有标签,删除远程废弃标签:git push origin :<废弃标签名>。
- 用
彻底移除历史中的大文件
如果之前提交过大型文件(比如安装包、视频、压缩包),哪怕后来删了,历史记录里的这些文件还会占远程空间:- 找出仓库里体积最大的10个对象对应的文件:
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10 | awk '{print $1}')" - 用
git filter-repo工具彻底移除这些大文件的所有历史(别用已弃用的git filter-branch):git filter-repo --path <大文件路径> --invert-paths - 强制推送到远程(注意:这会重写仓库历史,必须通知所有协作的同事重新克隆仓库,避免冲突):
git push --force --all git push --force --tags
- 找出仓库里体积最大的10个对象对应的文件:
检查Git LFS存储(如果用了)
要是用了LFS存大文件,旧的LFS对象可能没被清理:- 用
git lfs ls-files列出所有LFS文件。 - 清理本地LFS缓存:
git lfs prune。 - 重新推送清理后的LFS对象:
git lfs push --all origin,同时去Bitbucket的LFS设置里看看有没有可清理的旧对象。
- 用
内容的提问来源于stack exchange,提问作者ujko
相关产品推荐
相关产品推荐

