みなさんGit LFS (Git Large File Storage) 使ってますか?巨大なバイナリファイルを含むリポジトリはGit操作全般が重くなりがちなので、Git LFS登場時は救世主のように思われましたが、当初の予想より普及していないのが現状ではないでしょうか。
イマイチ普及していない原因として、覚えることが増えるであったりcloneその他が案外遅いなど色々あるかと思います。加えて、個人レベルではお財布に優しくないのも普及を妨げているかもしれません。下記にGitHub・BitBucketでのGit LFS利用料金をまとめてみました。
GitHub | BitBucket | |
---|---|---|
無料枠 | ストレージ1GB/月 下り転送量1GB/月 |
ストレージ1GB/月 転送量制限なし |
有料プラン | $5/月 (追加ストレージ50GB・ 下り転送量50GB) |
$10/月 (追加ストレージ100GB) |
デカいバイナリファイルを扱いたいからGit LFSを使いたいのに無料枠1GBとはショボすぎじゃないですかね…と思わないでもありません。
Git LFS容量のダイエット
Git LFSでは管理下のバイナリファイルの全ての履歴が保存されます。つまり、LFS管理下の100MBのファイルを10回更新するとGit LFSストレージを1GB消費となり、無料枠を使い切ることになります。これでは長期プロジェクトになるほど古いバイナリファイル履歴による課金が増えていくことになりかねません。
プロジェクトによっては一定以上古いバイナリファイルは不要なこともあるので、これを削除して少しでも課金額が減らせたらいいですよね。しかし、Git LFSではリモートリポジトリのファイルを消す統一的インターフェースは提供されておらず、各サービス事業者ごとの実装依存になっています。
GitHub・BitBucketについては、以下のような対応状況です。
GitHubの場合
GitHubでは個別にGit LFSの履歴を消す方法は提供されていないようです。唯一Git LFSのストレージ容量を減らす方法はリポジトリごと削除することです。
手元にbareリポジトリを確保した上で、深夜早朝などにGitHub上のリポジトリを削除・再作成してBFG Repo-Cleanerで巨大ファイルを削除して再度pushするなどすればダイエットは実現できそうですが、プロジェクトメンバー全員がcloneからやり直しになるので面倒なのは間違いないでしょう。
BitBucketの場合
BitBucketではGit LFS管理のファイルを個別に消すWebインターフェースが提供されているそうです。チマチマ消せば多少延命できそうですね。

(「Git LFS - large file storage | Atlassian Git Tutorial」より引用)