鶏口牛後な日々

心の赴くまま、やりたいことを仕事に。

gitで.gitignoreそれ自体をgitの対象範囲から外したい(ignoreしたい!)と思った人、考え直しましょう

gitで、publicフォルダなど、自動生成されるフォルダやファイルは、gitの対象範囲から除外します。
その時は、.gitと同階層に.gitignore というファイルを作って、中に対象範囲から除外したいフォルダ名やファイル名を書き込みます。

ただ、そのために.gitignoreを編集すると、.gitignoreも、unstaged filesに表示されます。
チームで開発をしていて、すでにリーダーなどが.gitignoreを作っている場合、
.gitignoreは、すでにどこかのブランチのコミットなどに含まれている可能性が高いため、git pullなどをするときの妨げになることがあります。

私もまさにこの状況で、「え! 今git pull --rebaseしないといけないのに、git pullできないってどういうこと!? .gitignoreもignoreしてほしい!」と思って、調べました。
できるのか、できないのかでいうと、できます。
.git/info/exclude というファイル内に書き込めば.gitignoreもignoreできるようになるらしいです。
(私は結局やらなかったので、実際にやる人は、検索で他の人のサイトを探して下さい)


しかーし、やる前にまった!

こちらのサイト(stackoverflow)で、同じような質問をしている人がいるのですが、
他の人が回答する際に、待ったをかけています。

stackoverflow.com


ここで、一人目の回答者の人が、
「.gitignoreは、チームのメンバーみんなが、キャッシュファイルなどのプロジェクトで標準的なファイルを含んでしまうのを防ぐためのものだから、.gitignoreはignoreしちゃいけないよ! これはリモートレポジトリに含まれているべきものだ!」
と止めています。

なので、.gitignoreをignoreしたい! と思った時は、まず待った!
自分だけでやっている場合は別に周りに迷惑はかからないと思いますが、チームで開発している場合は共有物なので、repo(リモートレポジトリ)にあるべきものなので、ignore(無視)しないようにしましょう〜


まさに私がやろうとしていたことなので、ハマる人が他にもいるかもです。お気をつけて。