🔖
大規模プロジェクトgit reset操作の高速化 / Git操作小ネタ
概要
- 大規模なgitプロジェクトを使っていると
git resetコマンドが遅くなりがち - ビルドや環境で内部ファイルを削除したり、切り替えする際には
git resetが数分かかったりすることもあった -
git reset並列化コマンドがあったので試してみた
やり方
# local checkout の並列数を記載
git config --local checkout.workers <N>
# local checkout の並列数を4に設定
git config --local checkout.workers 4
# 0以下に設定すると並列数を最善に
git config --local checkout.workers 0
実験と結果
git管理下にリポジトリに対して以下のファイル操作を実行。数回実行してみてその平均時間を記載
git config --local checkout.workers <N>
rm -rf ./<path to a Assets Dir>
time git reset --hard
| オプション | 時間 |
|---|---|
| N = 1 (デフォルト) | 1:04.60s |
| N = 4 | 41.726s |
| N = 0 | 16.462s |
git reset --hard と git checkout . で違いがないか確認。
| N = 0でのコマンド | 時間 |
|---|---|
git reset --hard |
16.462s |
git checkout . |
24.496s |
N=0で確実に効果が出ていることがわかった。効果はマシンの性能によりけりだと思われます。
また git reset でも checkout でもファイルを戻すワーカーに効果がある。
副作用がどこまであるか不明だが、git reset処理に時間がかかっている場合は有効にする価値がありそう。
Discussion