何をしても.gitignoreが反映されない!
という状態で詰まったので、解決までの経緯を備忘録兼ねて記事にします。
忙しい人向けの結論
-
.gitignoreの文字コードを見直す。 -
UTF-8かShift-JISにしよう。
症状とか経緯とか↓
キャッシュを消してもダメだった
一度pushしたファイルだったり、インデックスが残ってると反映されないらしいので、キャッシュを全消し。
git rm -r --cached .
改めて、
git add .
で、いつもは正常に反映される・・・はずだった━━━━
しかし今回ばかりは何をしても反映されない!
放り投げて寝ました
何時間も向き合って、あらゆるパターンを試してもダメ。
寝て起きて試してもダメ。
結論:文字コードを見直す
その.gitignoreくん、文字コードおかしくないですか?
UTF-8かShift-JISで書きましょう。
...
ムリダナ(・×・)と諦めかけていたら、

ん...?文字コードがUTF-16 LEで、改行コードがLFだと...?
意図せぬ文字コードになっています。

文字コードをUTF-8にしてあげたら、あっさり反映されるようになりました(改行コードもCRLFに変更しました)。
Shift-JISでも正常に反映されます。
原因とか
【原因】Windows PowerShell+giboの相性問題
今回は、Windows PowerShell上でgiboを用いて生成していました。
この組み合わせが問題みたい。
gibo dump Python VisualStudioCode >> .gitignore
どうやら、Windows PowerShellとgiboの組み合わせだと、デフォルトで出力がUTF-16 LEかつLFになるみたいです。
GitはUTF-16 LEで書かれた.gitignoreを読むことができません。
【対策】Windows PowerShell+giboは使わない
giboを利用するならWindows PowerShellは避けた方良さそうです。
代わりに、以下の組み合わせが良さそうです。
-
コマンドプロンプト+gibo -
Git Bash+gibo -
Macのターミナル+gibo
【言い訳】Windows PowerShell+giboは普段使っていない
Windows PowerShell+giboは普段使っていない普段、Macのターミナルでgiboを用いて.gitignoreを生成していました。
前項のとおり、Macのターミナル+giboの組み合わせの場合、UTF-8かつCRLFで出力されるため、正常に反映されていました。
解決に何時間も要した最大の原因はコレです。
まさか文字コードが落とし穴だなんて、1μmも考えていませんでした。
まとめ
何してもダメな時、文字コードを見直してみてください。
コレに限らず、文字コードが原因でハマること、年に数回ありますよね。
今後も気を付けたいところです。

