Git

【Git】.DS_Storeなど不要なファイルを全リポジトリで無視する【Mac】

Macが自動生成する隠しファイル.DS_Storeなど、不要なファイルがGitのトラッキング対象になると面倒ですよね。

これを無視する方法ですが、何パターンかのやり方が広まっているらしく、
新人が間違った記事を参照してignoreが反映されずに困っていたのでまとめました。

前提として、SourceTreeなどのgit用のツールを使っている場合、ツールが勝手に設定を変更していたりするようです。
コマンドラインではなく、何かgit用のツールを使っているのならそのツール上から設定を行う方がよいでしょう。

ignore用の設定ファイルのパスを確認

まず、ローカルのignore用の設定ファイルの場所を確認します。

$ cat ~/.gitconfig

でexcludesfileという設定がないかを確認します。

excludesfile = /xxx/xxx/.gitignore_global

というような設定があれば、そのファイルを参照するよう設定されているのでそのファイルを変更しましょう。
どうやらSourceTreeなどを使っている場合にこの設定が自動で追加されていたりするそうです。
(既存の設定とぶつかってややこしいことにならないようにわざわざズラしているのだと思われます。)

設定がなければデフォルトの
~/.config/git/ignore
がignoreの設定ファイルになります。

ignoreする設定ファイルのパスですが、基本的にはそのまま利用し変更はしないほうがよいでしょう。
設定がなければデフォルトのままの方が混乱がないですし、
設定されているなら何かのツールの都合で設定が書き換えられている可能性があり直接変更すると不具合が出る可能性があるためです。

無視するファイルを設定する

設定ファイルの場所が分かったら実際に記述します。
基本的には内容を把握するためにもvimやエディタで開いて直接編集するのがおすすめです。

.DS_Store
.AppleDouble
.LSOverride

というように1行ずついれておきましょう。

初心者で開き方が分からない場合などは
$ echo '.DS_Store' >> ~/.config/git/ignore
とすることで1行ずつ直接設定を追加することもできます。

githubによるオススメ無視リストもあります。(Mac用はこちらです。やや過剰なくらいなのでお好みでというところでしょうか。)
IDEやVS Codeを使っている場合はその設定ファイルもリストにいれておくとよいでしょう。

なおプログラミング言語ごとのignoreすべきファイルは、そのリポジトリを使う全員に共通なのでリポジトリ毎の.gitignoreで設定する方がよく、
ここ(ローカル)で設定する必要はありません。

何をローカルで設定し、何をリポジトリで設定するか

まず最初に「どちらにも入れる」というのは有りです。
迷ったら両方にいれてしまってもいいのです。

その上で、使い分けについてです。
考え方は色々ありますが、基本的に
・他の人も関係あるならリポジトリの.gitignore
あなただけならローカルのgitignore
で設定しましょう。

あなただけ、というのはみんなWindowsの中で一人Macを使っているなどの場合ですね。
基本的にはリポジトリの.gitignoreで設定するのがよいです。

ちなみに私は今は.DS_Storeなどはあえてローカルのignore設定にいれていません。
管理する立場としてプロジェクトに参加することが多いので、.DS_Storeの.gitignore設定漏れを検知しておきたいからです。
通常は.DS_Storeを間違えてcommitしてしまって指摘される、ということを減らすためにローカルの設定にいれておくと安心です。

最後に

Gitはツールを使う場合はツールの挙動が分かっていないと教えられません。
初心者でGitについて教えてもらうことが多い場合は
ツールなしのCUIでやるのか、特定のツールを使うのかなどはGitについて質問する相手の環境にあわせておけるとよいでしょう。

参考:
~/.gitignore_global を指定するのをやめ、デフォルトの置き場に置こう

-Git
-