VS Codeのソース管理で、git addやdiff表示がもたつき、同期マークも消えなくなりました。ログとコマンドの実測で原因を探し、Defenderの除外追加とGitのダウングレードを試したところ、体感ではよくなった気がします。ただ、対策を同時に2つ入れたので、どちらが効いたのかはまだ分かりません。この記事は、その調査の記録です。
要約
- 症状が出たのは、最近触ったほぼすべてのプロジェクトです。調べたのは、直近で開いていた
Packages/kiritanとPages/static-blogです - ターミナルの
git statusは約100msで、Git単体は遅くありませんでした - VS Codeのログには、Gitコマンドが41秒止まった記録と、
git check-ignoreが毎回1-3秒かかる記録が残っていました - Git for Windowsを 2.55.0.5 に手動更新したのが2026-09-11で、遅さを感じ始めたのはその後です
- Defenderの除外追加と Git 2.48.1 へのダウングレードのあと、kiritan のGitコマンドは中央値207msに落ち着きました
NOTE
原因の断定はまだできません。数日使ってみないと、遅さが戻らないかも分からないためです。
症状と環境
遅いと感じた操作は次の3つです。
- VS Code GUIでの git add
- 変更のあるファイルを開いてから、diffが表示されるまでの待ち時間
- 同期マークがずっと回り続ける
環境は、Windows 11、VS Code 1.138.0、Git for Windows 2.55.0.5です。遅さは特定のプロジェクトに限らず、どのプロジェクトでも同じように出ていました。調査では、直近で開いていた D:\Codes\Packages\kiritan と D:\Codes\Pages\static-blog を測りました。
調査の記録
Git単体は速かった
まずターミナルから測りました。
| 対象 | 操作 | 時間 |
|---|---|---|
| 共通 | git —version | 80-140ms |
| kiritan | git status | 110ms |
| static-blog | git status | 98ms |
| static-blog | git diff HEAD, git show HEAD:file | 80-85ms |
どちらも追跡ファイルは200個ちょっとで、小さなリポジトリです。この時点では、Git単体を疑う根拠がなく、VS Code側の不具合を疑っていました(実際に後述する不具合が報告されていたがWindows環境でも同様の不具合があるかは不明)。
巨大ファイルの仮説
static-blog は追跡ファイルが223個なのに、packが1.29GiBもあります。履歴には50MBのPNGや37MBのmp4が残っていました。最初は履歴の重さを疑いましたが、git status が98msで返る以上、日常操作の遅さの主犯とは考えにくいです。ほぼ全プロジェクトで起きているという点とも合いません。この仮説は外しました。
VS Codeのログにあった41秒
VS Codeは拡張機能ごとにログを残していて、Git拡張のログ(Git.log)にコマンドごとの所要時間が出ます。static-blog のログには、次の記録がありました。
- 2026-09-21 00:18:50 に、
git status -z -uall、git show --textconv、git for-each-refが同時に41秒かかっている git check-ignoreが1.0秒、2.1秒、3.2秒と毎回遅いgit fetchが3-4分おきに走り、毎回1.2-2.7秒かかっている
41秒の記録は、特定のコマンドが重いというより、その間だけ環境全体が詰まっていた形をしています。同期マークが消えないのは、自動fetchが3分ごとに動いているのが一因だと考えました。node_modules のファイル数は、kiritan で2万2千個余り、static-blog で4万9千個ほどあります。check-ignore の遅さはこれと関係があるかもしれませんが、推測にとどまります。
Rust化との関係
最近GitがRustに置き換わっていると聞いたので、関係を確かめました。git version --build-options を実行すると、rust: disabled と出ました。手元のGitはRustなしでビルドされていて、この線はありません。
既知の不具合報告
GitHubのIssueとQiitaを検索しました。今回の症状にそのまま当てはまるものは見つかりませんでしたが、近い報告が3件ありました。
Git拡張が極端に遅くなる報告です。ターミナルでは1秒未満のfetchが遅くなるとのことで、macOSの報告であり、未解決です。
Built-in git extension became unbearably slow · Issue #313860 · microsoft/vscode · GitHub
github.com
起動直後の約67秒間、ステージ操作が効かなくなる報告です。WSL環境の報告で、こちらも未解決です。
git stopped working immediatetely after opening vscode or reloading · Issue #319728 · microsoft/vscode · GitHub
github.com
Git for Windowsの v2.46.1 以降で極端に遅くなり、v2.46.0 以前に戻して解決したという記事です。
Git for Windowsが使い物にならないぐらい遅くなったので回避した話 - Qiita
はじめに タイトルは「回避」であり「改善」ではない。 開発ではVisual Studio Cod (1.96.4) を利用している。 バージョン: 1.96.4 (system setup) コミット: cd4ee3b1c348a13bafd8f9ad8060705f6d...
Qiita

Qiitaの記事の版は2.46から2.47系で、今回の2.55とは版が違います。同じ現象かどうかは分かりません。
Gitを更新した時期
Twitterで流れてきたGitの新機能を試したく、最近自分でGitを更新した記憶があったので、インストール日を調べました。レジストリのInstallDateは 2026-09-11 で、版は 2.55.0.5 でした。このPCは2025年2月ごろに買ったもので、それ以来、最近までずっと同じGitを使っていました。手動で更新したのは初めてだったと思います。
遅さを感じ始めたのはこの更新の後で、時期が重なるので、更新を疑うことにしました。
試したこと
自動fetchの間隔を延ばす
git.autofetchPeriod を600秒に設定しました。既定は180秒です。fetch自体は1-3秒で終わりますが、頻度が高いと同期マークが出続けます。
Defenderの除外を追加
リアルタイム保護が git.exe の起動やファイルアクセスを遅くしている可能性がありました。管理者権限のPowerShellで、D:\Codes と git.exe を除外に追加しました。除外リストは一般ユーザーでは読めないので、Defenderのイベントログで確認しています。2026-09-21 00:42:55 に、次の2件の設定変更が記録されていました。
Exclusions\Paths\D:\CodesExclusions\Processes\git.exe
Git 2.48.1 へのダウングレード
Gitは、PCを買った初日に入れてから、今回の更新まで一度も更新していませんでした。そこで、購入時期に近い版として、2025年2月中旬にリリースされた 2.48.1 を選びました。更新前の正確な版は、記録が残っておらず特定できていません。
結果
ダウングレードのあと、kiritan のウィンドウの Git.log を集計しました。01:00から01:10の約10分間で、Gitコマンドは129回でした。
| 指標 | 値 |
|---|---|
| 中央値 | 207ms |
| 平均 | 503ms |
| 最大 | 6187ms |
普段の git status や git show、git check-ignore は100-300ms程度に収まりました。更新前のログでは check-ignore が1-3秒、git status が41秒かかった記録があったので、比べるとかなり軽いです。
ただし、遅い場面はまだ残っています。
- 起動直後(01:00:22から01:00:31)は、
git fetchが6.2秒、git check-ignoreが5.6秒でした。起動時にコマンドが集中するためかもしれません - 01:08:32 に、
git configとgit check-ignoreが2.5-2.8秒かかりました。以前の41秒と同じく、複数のコマンドがそろって遅くなっていました
(遅いといっても以前もこの程度だったかもしれませんが)
分かっていないこと
- どの対策が効いたのか: Defenderの除外(00:42)と、Gitのダウングレード(その後)をほぼ続けて行ったので、効果を切り分けられていません。片方を戻して比べる手はありますが、今は試していません
- 詰まりの原因: 除外とダウングレードのあとも、01:08:32 に数秒の詰まりが出ました。Gitの版だけでは説明がつきません。当時ビルドなどが動いていたかは、まだ確認していません
- 観測期間の短さ: 見たのは、約10分間のログ、1つのウィンドウだけです
おわりに
しばらく使ってみないと、遅さが戻らないかは分かりません。戻ったときは、その時刻の Git.log を読めば、何が同時に走っていたかを調べられます。
更新で勝手に新しい版へ戻されるのを避けたいときは、wingetでバージョンを固定できます。
winget pin add --id Git.Git --version 2.48.1
TIP
固定を解除するときは winget pin remove --id Git.Git を実行します。
同じ現象に遭遇した方や原因がわかる方はぜひ教えてください!
連絡先:
- Twitter: @rin_montblank
