如何覆盖Bitbucket远程仓库的.git文件夹?本地清理后推送无效
解决Bitbucket远程仓库体积过大的问题
问题根源
本地清理历史大文件后,远程仓库的旧提交对象并没有被自动移除——Git推送只会更新分支指针,不会主动清理远程端的废弃对象,所以克隆下来还是原来的大小。
操作步骤
1. 确认本地清理彻底
确保你已经用可靠的工具(比如git filter-repo,比旧的filter-branch更稳定)完成了历史大文件清理,本地仓库体积确实维持在3.6GB,所有分支、标签的历史都已修正。
2. 强制推送所有分支和标签
重新执行强制推送,确保清理后的分支和标签覆盖远程:
git push origin --force --all git push origin --force --tags
3. 触发Bitbucket的垃圾回收
Bitbucket不会自动清理废弃对象,必须手动触发:
- 登录Bitbucket,进入目标仓库的设置页面
- 找到仓库详情(Repository details)选项
- 点击页面中的垃圾回收(Garbage collect)按钮,等待平台完成清理
4. 验证效果
清理完成后,重新克隆仓库,检查体积是否已经降到和本地一致的3.6GB左右。
重要提醒
- 不要尝试直接覆盖远程的
.git文件夹,Git远程仓库由Bitbucket托管,不允许直接修改结构,必须通过Git命令和平台工具完成清理。 - 如果之前用的不是
git filter-repo,建议用它重新清理本地:它能彻底移除历史中所有大文件的痕迹,包括commit、标签、引用里的相关记录,比手动gc效果好得多。 - 通知团队成员:仓库历史已被重写,所有人必须重新克隆仓库,禁止继续使用旧的本地副本,避免把旧的大对象重新推回远程。
内容的提问来源于stack exchange,提问作者Shesha Chandra
相关产品推荐
相关产品推荐

