何をしても.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も考えていませんでした。
まとめ
何してもダメな時、文字コードを見直してみてください。
コレに限らず、文字コードが原因でハマること、年に数回ありますよね。
今後も気を付けたいところです。