🎯 結論
gitignore で実現できるのは
『未追跡 (untracked) のファイルに対して無視を決め込むこと』であって
『追跡 (tracked) されているファイルを未追跡 (untracked) にすること』ではない。
だから、既に tracked なファイルは
(例:一度 git add してステージングしたことのあるファイル)
後から .gitignore に追加しても意図通りに無視されない。
既に tracked なファイルについては
git rm --cached {file_path}
コマンドを使用して
指定したファイルを [tracked (追跡) → untracked (未追跡)] にすることで
git の追跡対象から外すことができる。
🔍 詳細
自分の備忘録も含めた内容となっており
気張らずゆるく書いた内容ですので悪しからず🙏
経緯
僕は GoogleAppsScript の開発をするに際して、
いつもローカルで GoogleAppsScript の開発を行えるテンプレートを使用しています。
(自分で作ったやつです)
こちらの記事でも紹介しておりますのでよろしければご覧ください。
【TypeScript + Webpack】今すぐ誰でも、ローカルで GoogleAppsScript の開発を始められるテンプレート (初心者向け)
本来は GAS プロジェクトを TypeScript で開発するために作ったものですが、
最近は TypeScript はめっきり使わなくなり
ただの『ローカルで GoogleAppsScript の開発を行えるテンプレート』に成り下がっています。
--
そんなテンプレートをいつも通り github から clone して
開発を行なっていたところ事件が起きました。
(これまでも同様の事件は起きていたのですが「変だなあ...」と思いつつ無視していました)
起きていたこと
.gitignore ファイルの中で変更を追跡してほしくないファイルを指定していたが
なぜか変更が追跡され続けていた。
(具体的には .clasp.json というファイル)
問題
.clasp.json は git 管理下に置きたくないのに git に変更が追跡されてしまっている。
自分で気をつけて commit, push しなければいいだけの話かもしれないが、
そこに気を張り続けるのも疲れるし、何より人間である私がいつミスをしでかすか分からない。
↑ こういった悩みを解消するために .gitignore ファイルで
.clasp.json を追跡対象から外すように設定したにも関わらず、
変更が追跡され続けているのは誠に遺憾。
原因
.clasp.json が既に tracked なファイル
(例:一度 git add してステージングしたことのあるファイル) であること。
.clasp.json は github から clone してきたプロジェクトの中に存在しているわけですから、
tracked なファイルであることは自明です。
解決策
git rm --cached {file_path}
コマンドを利用して
指定したファイルを [tracked (追跡) → untracked (未追跡)] にすることで
git の追跡対象から外す。
そうすると、ちゃんと gitignore が効くようになる。
( gitignore で実現できることは『未追跡 (untracked) のファイルに対して無視を決め込むこと』だから)