VS Codeの「gitリポジトリの変更が多すぎる」エラーを修正する

beginner💻 VS Code2026-04-09| Windows、macOS、Linux上のVS Code 1.70以降 — Gitで追跡または未追跡のファイルが大量にあるプロジェクト

Error Message

The git repository at 'path' has too many changes. Only a subset of Git features will be enabled.
#git#ソース管理#パフォーマンス

エラーの内容

VS Code でプロジェクトを開くと、ソース管理パネルに次のメッセージが表示されます:

The git repository at 'path' has too many changes. Only a subset of Git features will be enabled.

ソース管理のバッジが固まり、ファイルの差分が読み込まれなくなります。下部の Git ステータスバーも正確な情報を表示しなくなります。VS Code の組み込み Git 拡張機能には 10,000 ファイル という上限があります。この上限に達すると、エディタのパフォーマンスを守るために意図的に機能を制限し、ソース管理パネルが半壊した状態になります。

原因

ほとんどの場合、以下のいずれかが原因です:

  • node_modules/.venv/dist/、またはビルド出力フォルダが .gitignore に記載されていない
  • 大量の生成ファイルが誤ってステージングされたか、未追跡のまま残っている
  • 多数のネストされた Git 管理サブプロジェクトを含むモノレポのルートを開いた
  • .gitignore の構文エラーにより、すべてのパターンマッチングが静かに停止している

手順ごとの解決方法

ステップ 1 — Git が認識しているファイル数を確認する

プロジェクトルートから次のコマンドを実行します:

git status --porcelain | wc -l

出力が数万件に及ぶ場合、原因は .gitignore の欠落または破損です。正常なプロジェクトでは、活発な開発中でも変更ファイルは通常 50 件未満です。

ステップ 2 — .gitignore を修正する

よくある不要フォルダを .gitignore に追加します:

# Node
node_modules/
dist/
.next/
build/

# Python
.venv/
__pycache__/
*.pyc

# Java / Gradle / Maven
target/
.gradle/

# General
*.log
.DS_Store
Thumbs.db
.env

ファイルを保存するだけでは不十分です — Git はすでにそれらのパスをインデックスに登録しています。キャッシュをクリアしてください:

git rm -r --cached .
git add .
git status --porcelain | wc -l

ファイル数が数万件から二桁台に激減するはずです。コミットする前に git status を実行して、一覧が正しいか確認してください。

ステップ 3 — VS Code のファイル上限を引き上げる(任意)

意図的にバージョン管理している大規模な生成データセットなど、多くのファイルを追跡する正当な理由がある場合は、.vscode/settings.json でしきい値を引き上げます:

{
  "git.repositoryScanner.maxFileCount": 50000
}

VS Code の外部で Git を管理している場合は、警告を完全に無効化することもできます:

{
  "git.ignoreLimitWarning": true
}

ステップ 4 — inotify の上限を引き上げる(Linux のみ)

Linux システムはファイルの変更監視に inotify を使用します。デフォルトの上限は大規模プロジェクトには低すぎることが多いです。現在の値を確認して引き上げてください:

# 現在の上限を確認
cat /proc/sys/fs/inotify/max_user_watches

# 一時的に引き上げる
sudo sysctl fs.inotify.max_user_watches=524288

# 再起動後も永続的に有効にする
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

ステップ 5 — 不要なフォルダの VS Code 監視を停止する

正しい .gitignore は Git を制御します。しかし VS Code には IntelliSense 用の独自のファイルウォッチャーがあり、.gitignore を参照しません。無視するフォルダを明示的に指定してください:

{
  "files.watcherExclude": {
    "**/node_modules/**": true,
    "**/.venv/**": true,
    "**/dist/**": true,
    "**/.git/objects/**": true,
    "**/.git/subtree-cache/**": true
  },
  "files.exclude": {
    "**/node_modules": true,
    "**/__pycache__": true
  }
}

修正の確認

  • VS Code を再読み込みする:Ctrl+Shift+PDeveloper: Reload Window
  • ソース管理パネルを確認 — 警告バナーが消えているはずです
  • Git バッジに正確な変更ファイル数が表示されるようになります
  • ターミナルで git status を実行して、一覧が正常か確認してください

クイックヒント

  • モノレポ:リポジトリのルートを開くと、VS Code はすべてのサブパッケージのファイルを合計してカウントします。特定のエリアだけで作業している場合は、そのサブフォルダを直接開いてください。
  • Git サブモジュール:VS Code はサブモジュールのファイルも合計に含めます。サブモジュール統合が不要な場合は "git.detectSubmodules": false を設定してください。
  • グローバル .gitignore:すべてのプロジェクトに .DS_StoreThumbs.db を繰り返し追加するのを止めましょう。グローバルな除外ファイルに一度だけ設定できます:git config --global core.excludesfile ~/.gitignore_global
  • git rm -r --cached . の実行後、コミットする前に git diff --cached --name-only | head -20 を実行して、重要なファイルが誤って除外されていないか確認してください。

Related Error Notes