こんにちは。現場の最前線でコードと格闘している皆さん。
「Gitが重い」「巨大なリポジトリで `git status` を打つたびにコーヒーを淹れに行く時間ができる」。そんな経験はありませんか?
Gitはデフォルト設定だと、実は「控えめ」に動くように設計されています。でも、皆さんが使っているPCは、もっと高性能なはずですよね? そのスペックを眠らせておくのはあまりにももったいない。
今回は、メモリが潤沢な開発環境において、Gitのパフォーマンスを限界まで引き出す「知る人ぞ知るチューニング」を伝授します。これを設定するだけで、日々のストレスが劇的に解消されますよ。
—
なぜGitは「あえて遅く」なっているのか?
Gitは、歴史的に「あらゆる環境で動くこと」を優先してきました。メモリが数GBしかないような環境でもクラッシュしないよう、デフォルトのキャッシュサイズは非常に小さく設定されています。
しかし、現代の開発環境では16GB、32GB、あるいはそれ以上のメモリが搭載されていることも珍しくありません。このリソースをGitに開放してあげることで、内部処理(差分計算や圧縮)の回数を減らし、爆速を実現できるのです。
—
ステップ1:Gitの現状を知る(まずはここから)
まずは、現在設定されている値を確認しましょう。ターミナルで以下を打ち込んでください。
現在の設定を確認
git config –global -l
もし何も表示されなければ、すべてデフォルト値で動いています。ここから「極限設定」を注入していきます。
—
ステップ2:メモリを解放して高速化する(極限チューニング)
以下のコマンドを順番に実行してください。これらはすべてグローバル設定(全リポジトリ共通)として適用されます。
1. `core.deltaBaseCacheLimit`:差分計算のキャッシュを最大化
Gitはファイルを圧縮(デルタ圧縮)して保存しますが、その計算結果をメモリに保持する量がデフォルトでは小さすぎます。これを増やすことで、再計算を劇的に減らします。
2GBをキャッシュに割り当てる設定(メモリに余裕があるなら2gでOK)
git config –global core.deltaBaseCacheLimit 2g
- 効果: 巨大なリポジトリでの `git diff` や `git log` が、計算をスキップして爆速になります。
2. `core.bigFileThreshold`:大容量ファイルの処理を最適化
Gitは大きなファイルを扱う際、メモリを節約するために処理を小分けにします。しかし、現代のPCなら一気に読み込んだ方が速い。
500MBまでのファイルをメモリ上で一気に処理させる
git config –global core.bigFileThreshold 500m
- 効果: バイナリファイルや大きなデータセットを含むリポジトリでの `git add` や `git commit` がスムーズになります。
—
ステップ3:動作確認「HelloWorld的なテスト」
設定が効いているか、感覚だけでなく数値で確認しましょう。`time` コマンドを使うのが一番です。
設定前と後で、巨大なリポジトリで diff を取ってみる
time git diff > /dev/null
「設定前」と「設定後」で、`real` の時間が目に見えて短縮されていれば成功です。特に、履歴の深い場所や、ファイル数の多いリポジトリでその真価を発揮します。
—
さらに上を目指すエンジニアへ:プラスアルファの小技
設定だけでは足りない「超大規模リポジトリ」を扱っているなら、以下のコマンドも併せて覚えておいてください。
- `git gc –prune=now`: 不要なゴミデータを強制的に消去し、リポジトリを圧縮します。週に一度は実行する習慣を。
- `git config –global core.preloadindex true`: インデックスの更新を並列で行います。CPUのコア数が多い現代のPCでは必須の設定です。
—
最後に:道具を使いこなすということ
「たかが設定」と思うかもしれませんが、一日数回、あるいは数十回行う操作が1秒速くなるだけで、あなたの集中力は削がれず、より深い思考に没頭できるようになります。
エンジニアにとって、開発環境は「拡張された脳」です。デフォルトに甘んじることなく、自分の環境に最適化し続ける。その姿勢こそが、一流への第一歩ですよ。
さあ、爆速になったGitで、今日も最高のコードを書きましょう!何か詰まったら、いつでも聞きに来てくださいね。