【发布时间】:2015-11-03 03:15:35
【问题描述】:
有人不小心将一些大型(多 GB)二进制文件提交到我的自托管 gitlab 存储库中,现在每次有人尝试从存储库中提取时,服务器都会受到严重打击。
我尝试通过强制推送删除对文件的任何引用,但它似乎仍然会影响服务器。有没有办法强制gitlab服务器摆脱它?
我阅读了一些诸如 filter-branch 之类的东西,但我不确定这会对裸仓库产生什么影响,或者我什至如何在我不再引用的提交中使用它。
更新:作为参考,这些类型的消息出现在 gitlab VM 的控制台上:
[ 5099.922896] Out of memory: kill process 6200 (git-upload-pack) score 1053982 or a child
[ 5099.922908] Killed process 6202 (git)
[ 5099.930796] Out of memory: kill process 6200 (git-upload-pack) score 360394 or a child
[ 5099.930807] Killed process 6203 (git)
[ 5099.938875] Out of memory: kill process 6200 (git-upload-pack) score 360394 or a child
[ 5099.938886] Killed process 6203 (git)
[ 5099.951163] Out of memory: kill process 6139 (git-upload-pack) score 324327 or a child
[ 5099.951174] Killed process 6151 (git)
【问题讨论】:
-
您是如何尝试删除文件的?
-
@Tim - 我创建了一个提交来还原不需要的文件,然后将其压缩到原始提交中,因此就分支历史而言,它不再存在,但它仍然在 Git 的内部浮动某处。
-
@VonC - 看起来它可能有潜力。如果我运行 BFG、gc 和其他东西然后推送到远程,它会在远程中引起相同的变化吗?还是应该直接在服务器上运行这些工具?
-
@Karl 我也会在服务器上运行这些命令。