はじめに
git リポジトリは歴史を重ねるごとに、だんだんと容量がおおきくなっていしまい、しまいにはギガ単位になってしまう事ってありますよね。
自分も、とあるリポジトリを clone したら、なんとgitの容量が数十ギガに達していて、PCのローカルストレージが圧迫されてしまう問題にあってしまったので、その時の対応方法を備忘録として残しておきます。
#容量を調べる
どれくらいの容量なのか調べるには du コマンドを使います。
$ du -sh .git
55.8G .git
55Gもあります。
泣けてきます。
ダウンロードにも1時間くらいかかります...
#解決方法
今回行った解決方法としては、下記のような対策をとりました。
- 直近の歴史だけを取得する
- 必要なブランチを1つだけを取得する
直近の歴史だけを取得する depth オプション
今回は特に修正歴史は必要ないと判断した為、直近の修正記録だけを取得するようにして、容量削減を行いました。
depth オプションはリポジトリを clone や fetch する際に、取得する履歴の数を指定できます。
下記のように指定した場合は、最新の履歴のみを取得します。
$ git clone {URL} --depth 1
指定したブランチだけダウンロード single-branch オプション
ブランチの管理がおざなりになっていた事もあり、相当な数のブランチが存在していました。
余計なブランチは邪魔なだけなので、必要なブランチだけダウンロードします。
下記のように指定する事で master ブランチだけをダウンロードします。
$ git clone -b master --single-branch {URL}
#まとめ
上記の depth と single-branch を指定して clone します。
git clone -b master --single-branch {URL} --depth 1
すると 先ほどまで1時間程かかっていたダウンロードが一瞬で終わります。
容量を確認すると...
$ du -sh .git
42M .git
42M !
劇的に軽減されていますw
これで、PCのストレージを圧迫される事なく、ソースコードを取得する事ができました。
今回の用に、歴史情報が必要無い場合や必要なブランチを絞れる場合にはかなり有効ですね。