トラブルシューティング

.gitignore が効かないときの対処法

.gitignore に追加したのに無視されないファイルへの対処方法を解説

.gitignore が効かないときの対処法 diagram

なぜ .gitignore が効かないのか

.gitignore は「まだ Git に追跡されていないファイル」にだけ効果があります。

一度 git add してステージングエリアに登録したファイルや、既にコミット済みのファイルは .gitignore に記述しても無視されません。

これが最も多い原因です。

git rm --cached で追跡を解除する

  1. git rm --cached <file> で追跡を解除

    ワーキングツリーのファイルは残したまま、Git の追跡だけを外します。

  2. ディレクトリは -r を付ける

    git rm --cached -r logs/ のように -r を指定するとディレクトリ配下をまとめて解除できます。

  3. 変更をコミット

    git commit -m "追跡対象から除外" で確定させます。以降は .gitignore が効くようになります。

bash
# ファイル単体の追跡を解除
git rm --cached secret.txt

# ディレクトリごと追跡を解除
git rm --cached -r logs/

# 変更をコミット
git commit -m "追跡対象から除外"

.gitignore のパターン記法

.gitignore では、*(任意の文字列)、**(ディレクトリの再帰マッチ)、!(否定パターン) などが使えます。

ディレクトリを指定する場合は末尾に / を付けます。

で始まる行はコメントです。

bash
# よく使うパターン例
*.log          # すべての .log ファイル
build/         # build ディレクトリ
!important.log # important.log は除外しない
**/.DS_Store   # すべての階層の .DS_Store

プロジェクト全体の追跡解除を一括で行う

  1. 全ファイルのキャッシュをクリア

    git rm -r --cached . を実行します。ワーキングツリーのファイルには影響しません。

  2. 再度 git add . で追加

    今度は .gitignore が反映された状態で再追跡されます。

  3. コミット

    git commit -m ".gitignore を再適用" のようにコミットして完了です。

bash
# 全ファイルのキャッシュをクリア
git rm -r --cached .

# 再度追加(.gitignore が反映される)
git add .

# コミット
git commit -m ".gitignore を再適用"

関連コマンド