有人意外地将一些大型(多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)
Run Code Online (Sandbox Code Playgroud)
正如OP Karl 在评论中所证实的,运行BFG repo清洁器在服务器端(直接在裸仓库中)足以删除大型二进制文件.
如果您遵循(如" Git - 删除Blob"中所述) "中所述):
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now
Run Code Online (Sandbox Code Playgroud)
但也(" git gc --aggressivevsgit repack "):
git gc
git repack -Ad # kills in-pack garbage
git prune # kills loose garbage
Run Code Online (Sandbox Code Playgroud)
你最终应该有一个更纤薄,更小的裸露回购.