← エラー辞典に戻る

環境構築

.gitignoreが効かない・無視されない

追跡済みファイルには効かない/パターンの書き方ミス

こんな症状

.gitignoreに書いたのにgit statusに出続ける。原因は「すでに追跡済みのファイルには効かない」というGitの仕様か、パターンの書き方ミスのどちらかだよ。

まず試す

git check-ignore -v ファイル名 で効いているか確認。追跡済みなら git rm -r --cached で外してコミットする。

env
# 追跡を解除してからコミット(ファイルは消えない)
git rm -r --cached node_modules
git commit -m "node_modules を追跡から外す"

# ルールが効いているか確認
git check-ignore -v node_modules/foo.js

これで直らなければ、下の「自分のケース」を確認。

🔍 自分のケースはどれ?

  • 過去に git add 済みのファイルが消えない
    → git rm -r --cached で追跡を解除し commit(ファイル自体は残る)。
  • パターンが効いていない
    → git check-ignore -v で確認。フォルダは node_modules/、拡張子は *.log のように書く。
  • .gitignore の置き場所
    → リポジトリのルートにあるか確認する。

なぜ起きる?

原因は2系統。(1) 一度git add / commitしたファイルは、.gitignoreに追加しても追跡され続けるよ。.gitignoreが効くのは「まだ追跡されていないファイル」だけなんだ。 (2) パターンの書き方ミス——node_modules と書くべきところを /src/node_modules のような実情に合わないパスにしている、.gitignoreをリポジトリのルート以外に置いている、など。どちらが原因かは git check-ignore -v ファイル名 で確認できるよ(何も表示されなければ無視されていない)。

✕ エラーが起きるコード
$ echo node_modules/ >> .gitignore
$ git status
# それでも node_modules 内の変更が表示される
# (過去に一度 git add . してしまっている)
✓ 直したコード
# 追跡を解除してからコミット(ファイルは消えない)
$ git rm -r --cached node_modules
$ git commit -m "node_modules を追跡から外す"

# ルールが効いているかの確認
$ git check-ignore -v node_modules/foo.js

✅ 直ったか確認

git status に該当ファイルが出なくなればOK。

🆘 まだ直らないときは

git check-ignore -v ファイル名 が何も表示しなければ、まだ無視されていない=パターンを見直す。

Q&Aで質問する →

この解決法は役立ちましたか?

🔗 関連するエラー

🔗 別カテゴリの関連エラー

📖 この問題を学べるレッスン

Gitレッスン2:はじめてのGit操作で根本から理解する →

✏️ 手を動かして練習

このテーマの図解ドリルで実際に書いて確認する →

📝 関連ブログ記事

📖 関連する用語

🚀 Gitレッスン2:はじめてのGit操作で根本解決しよう!

このエラーの背景にある仕組みを、手を動かしながら学べるレッスンがあります。完全無料・登録不要。

Gitレッスン2:はじめてのGit操作へ →

❓ 関連するQ&A