読者です 読者をやめる 読者になる 読者になる

.gitignoreを変更したのに反映されない場合の対処法

Git

.gitignoreを変更したはずなのに反映されないことがあったのでその対処法を忘れないためにメモ
なんでもキャッシュが残っていると,うまく反映されないらしい.キャッシュを削除してやることで.gitignoreの変更が反映される.ただしコミットしていないコードの変更部分も無くなってしまうようなので注意が必要.以下その手順

$git rm -r --cached
$git add .
$git commit -m'gitignoreを反映させる'

【追記】

id:asonasさんからコメントにてご指摘を頂いたので,ちょっとgitコマンドについて自分なりに復習してみようと思う.ちなみに先述の記事を書いたときには
.gitignore の設定を反映させる
を参考にさせて頂いた.

git rm
ワーキングツリーからディレクトリやファイルが削除し,ファイルの削除がインデックスに反映された状態となる.

git rm --cached
ファイルをインデックスからのみ削除し,ファイルを管理対象外やコミット対象外にできる.

git rm -r --cached 
ディレクトリごとファイルを削除する場合は,-rオプションを付けて実行する.

これを踏まえて実験してみる
まず幾つかファイルをコミットしてみる

f:id:alice345:20130910221100j:plain

その後,.gitignoreを追加

f:id:alice345:20130910221216j:plain

中身は
*.txt
次にtest1.txtを編集.その後git statusしてみると

f:id:alice345:20130910221434j:plain

コミット済みのファイルは,無視の対象になっていないことが分かる.
git rm --cachedを使って,インデックスからのみ削除する.

f:id:alice345:20130910221933j:plain

その上でファイルを編集してみると

f:id:alice345:20130910222543j:plain

無視できた!
すでに無視したいファイルをコミットしたりインデックスに登録してしまった場合はそれをインデックスから削除してやる必要がある模様.そこでハマってしまっていた.

うーむ,コマンドの意味を全くわからずに使っていた,反省.
これからはちゃんと調べて理解してから使うようにしよう.

id:asonasさん,改めてご指摘ありがとうございました.