🐇
巨大リポジトリの git status を高速化
課題
通常のリポジトリではさほど気にならないかと思いますが、巨大リポジトリで git status
を実行すると数十秒待たされます。これを少しでも短縮します。
status -u オプション
git status
を実行するときに -u[<mode>]
, --untracked-files[=<mode>]
オプションで no
を指定すると untracked files を表示しなくなります。デフォルトは all
です。
ショートオプションでは間にスペースを入れません。
git status -uno
とあるリポジトリでは35秒かかっていた git status
が15秒まで短縮されました。
当然 untracked files は表示されなくなるので注意は必要です。
git add (-N)
すると表示されるようになります。
config で恒久的に適用
git config
で恒久的に適用することもできます。
status.showUntrackedFiles
を no
に設定します。
git config status.showUntrackedFiles no
元に戻す場合は --unset
を使います。
git config --unset status.showUntrackedFiles
設定の保存先は --local
(default), --global
, --system
から適切なものを選んでください。
まとめ
untracked files を非表示にするだけで実行時間が半分以下になりました。
Git で扱いたい新規ファイルは大体 git add
すると思うのでそんなに困らなさそうです。
他にもパーシャルクローンなどでも高速化できると思いますが今回は割愛します。
こちらの記事が参考になりそうです。
Discussion