🐇

巨大リポジトリの git status を高速化

2022/02/07に公開

課題

通常のリポジトリではさほど気にならないかと思いますが、巨大リポジトリで 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.showUntrackedFilesno に設定します。

git config status.showUntrackedFiles no

元に戻す場合は --unset を使います。

git config --unset status.showUntrackedFiles

設定の保存先は --local (default), --global, --system から適切なものを選んでください。

まとめ

untracked files を非表示にするだけで実行時間が半分以下になりました。
Git で扱いたい新規ファイルは大体 git add すると思うのでそんなに困らなさそうです。

他にもパーシャルクローンなどでも高速化できると思いますが今回は割愛します。
こちらの記事が参考になりそうです。
https://swet.dena.com/entry/2021/07/12/120000

Discussion