あれ? gitignore が効かない
[質問]
WSLで、ローカルリポジトリに ".gitignore" を作りましたが、そこで指定したファイルが無視されないのは、なにが原因ですか
[回答] Gemini
それは非常に「Gitあるある」な現象ですね!原因はほぼ間違いなく、.gitignore を作成する前に、そのファイルを一度 Git の管理下(インデックス)に入れてしまったことにあります。
Gitのルールとして、「すでに追跡(track)されているファイルは、後から .gitignore に書いても無視されない」という性質があります。
原因:インデックスにキャッシュが残っている
.gitignore は「これから新しく追加されるファイル」には効きますが、すでに git add されてリポジトリに記録されているファイルに対しては、手動で追跡を解除してあげる必要があります。
解決策:キャッシュを削除する(インデックスから外す)
ファイル自体を削除せずに、Gitの管理対象からだけ外すコマンドを実行します。
1. 特定のファイルだけ無視したい場合
例えば config.json を無視したいなら:
2. .gitignore の設定をすべて反映し直したい場合(推奨)
一度すべてのキャッシュをクリアして、.gitignore に基づいて登録し直すのが一番確実です。
-
現在の変更をすべてコミットしておく(念のため)
-
インデックス(キャッシュ)をすべて削除
※
--cachedを付け忘れると実ファイルが消えるので注意してください!
-
改めてすべて追加し直す
-
反映をコミットする
その他のチェックポイント
もし上記でも直らない場合は、以下の2点を確認してみてください。
- ファイル名が正しいか:
.gitignoreのスペルが間違っていないか(先頭のドット.を忘れがちです)。 - 記述ルール: 例えば
dist/と書くとフォルダごと無視されますが、/distだとルート直下のフォルダのみに限定されます。
次に役立つヒント
「何が原因で無視されていないのか」を確認するには、以下のコマンドが便利です。
これを使うと、「どの設定ファイルの、どの行が原因で無視(あるいは追跡)されているか」をピンポイントで教えてくれます。
この後、「GitHubに間違えて上げてしまった機密情報(パスワードなど)を完全に消し去る方法」などについて詳しく知りたいですか?