🐇
巨大リポジトリの 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