2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Gitプロジェクトの容量削減

Last updated at Posted at 2020-09-23

#概要
ローカルで開発していたgitプロジェクトをgithubにあげようとしたらpushに失敗しました。
ログを見ると、ファイルサイズが100MBを超えていてrejectされたとのことでした。
容量が大きいファイルは主に.git/objectsであり、これはcommitなどの差分ログなどを管理している場所らしいです。

以下の通り、不要な履歴を削除したところ、無事pushできました。

git_find_big.shをダウンロードし、対象のgitディレクトリに移動。自分も移動し、実行。
ファイルサイズの大きいログを特定します。

$ sh git_find_big.sh
All sizes are in kB's. The pack column is the size of the object, compressed, inside the pack file.
-e      size    pack                                      SHA                                                                                location
875768  184789  561b02bb28c310f6967f392e7364f08f860a20cd  mecab/dic/mecab-ipadic-neologd/sys.dic
3382    1636    79ac3475574d2b3374156ca9ec4db9e31744d0f7  mecab/dic/mecab-ipadic-neologd/matrix.bin
1407    289     4f457bb9b0cd43c8aacc7db27c15c8447134c280  lib/python3.8/site-packages/MeCab/_MeCab.cpython-38-darwin.so
275     148     0fd855f46465b1ba48d8490c912196ce0590bfb3  lib/python3.8/site-packages/certifi/cacert.pem
266     62      7ebc7eb994bba9ed32f30d557af93627cae4d543  lib/python3.8/site-packages/pip/_vendor/pyparsing.py
256     0       09451e3eabee98e979fed8494bef8d2087e23dca  mecab/dic/mecab-ipadic-neologd/char.bin
235     84      ccf658ba558769b21c78158d4897766fabde3420  lib/python3.8/site-packages/pip/_vendor/__pycache__/pyparsing.cpython-38.pyc
197     37      3766dd49f6d6172a497c40a5d74c6e3f1ff85b05  lib/python3.8/site-packages/idna/uts46data.py
173     37      ab8fd4d23761f29252da7d7083df93eb3224c4c2  lib/python3.8/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-38.pyc
119     23      0cdcd12021a349d69e238fdb79d1afdc12248552  faq/botanswer.json

MeCab関係の差分ログが大きかった模様です。これらの履歴を削除していきます。

$ git filter-branch --index-filter "git rm -r --cached --ignore-unmatch ファイル名" -- --all

その後整理をします。無事容量が削減されました。

$ git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
$ git reflog expire --expire=now --all
$ git gc --prune=now
$ du -sh .git/objects
7.6M	.git/objects

参考
LAN内専用のGitリポジトリを減量したい | すたらブログ
[巨大なファイルを含んだリポジトリの履歴を改変して GitHub にインポートする方法]
(https://qiita.com/osakiy/items/cf59c7a535f2fb1c0f90)

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?