出来ない理由
- .gitignoreのファイルは「まだ追跡ファイルに含まれていないファイルを追跡ファイルに含めないようにする」設定です
- つまり、.gitignoreを用いて更新不可にすることは不可能です。
- .gitignoreのファイルに書かれているものでも、既にリポジトリに含まれていれば、更新可能です。
- グローバルの.config/git/ignoreの中に更新したくないファイルのシグネチャを定義していても、Gitリポジトリに含まれていれば更新可能になります。
対応策(未調査)
- gitAttributeのファイルを使う?
- gitのフック処理を用いる?
一旦備忘録として
Git リファレンス
Git フックの適用例
.config/git/ignoreの設定に関するQiitaの記事
テストしたGithubリポジトリ
感想
大規模プロジェクトでの更新不可の設定ファイルへのプロテクトの設定に".gitignore"が使用できると思って調べてたんですが、ダメらしいです。結構調査が怠かったので、備忘的に残しておきました。
- .gitignoreのファイルは「まだ追跡ファイルに含まれていないファイルを追跡ファイルに含めないようにする」設定です
これ↑のことをちゃんと理解するまで結構時間がかかりました。そうなんだ…。
Gitのフックまで作り込むのはコストに見合っていなさそうなんで、あんまりやりたくないですね…。
追加の失敗
ディレクトリとファイルの違いがわからない
最初、.config/git/ignoreに更新不可ファイルを定義したのにGitの追跡ファイル扱いをされてしまうものだから、ignore配下に.gitignoreを追加しなければいけないのではないかと勘違いしました。
結論としてはこれは間違いで、ignoreファイルの中に定義しなければいけなかった訳ですが…。
ディレクトリであることを明示するのであれば、.config/git/ignore/と書いてあるはずなのですが、その辺りの表記の違いをあまり理解できておらず、無駄に時間を取られました。
ちなみに、その時は以下のようなエラーが出ました。
Git: fatal: cannot use /Users/gotohshiryuu/.config/git/ignore as an exclude file
今見ると、「ignoreがディレクトリになっているせいで読めないんだけど💢」というように受け取れますね…。
.gitignoreが重複しているせいでエラーになっているのかと勘違いしていました。