Gitで使用しているディレクトリのサイズを小さくする方法はないでしょうか?
GitLabに大きなファイル(700M強)を間違えてadd,commit,pushしてしまいました。
ローカルもリモート側もファイルを削除しました。
duコマンドでローカルのディレクトリサイズを調べると、995Mでした。
どこが?と一つ下の階層をduコマンドで調べると、合計で200Mほどしかありません。
そこで、隠しファイルも調べると、.gitが理由でした。
$ du -sh .git/objects 765M .git/objects
実際には、packファイルがほぼそのサイズでした。
$ ls -lth .git/objects/pack total 1542008 -r--r--r-- 1 hoge staff 25K 10 27 15:28 pack-bb04c989f4c5947bd0749d56f18c68c2e68537a3.idx -r--r--r-- 1 hoge staff 738M 10 27 15:28 pack-bb04c989f4c5947bd0749d56f18c68c2e68537a3.pack
git gcを実行すると12M小さくなりましたが、割合としては大きくありません。
誤ってpushしたファイルを“無かったこと”にはできないのでしょうか。
$ git gc Enumerating objects: 888, done. Counting objects: 100% (888/888), done. Delta compression using up to 4 threads Compressing objects: 100% (737/737), done. Writing objects: 100% (888/888), done. Total 888 (delta 543), reused 226 (delta 135) Computing commit graph generation numbers: 100% (143/143), done. enteropathway_table $ du -sh .git/objects 753M .git/objects
いろいろと調べて、git filter-branch で可能かと思えています。
使い始めたばかりで(そのこともあって、このような誤ったファイルをpushしてしまった)
なにが行われるのか、リモート側とローカル側の区別がいま一つ理解できず質問しました。
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch <ファイル名orフォルダ名>" --prune-empty -- --all

