すべてのリポジトリで .DS_Store を gitignore する方法

1 min read読了の目安(約1400字

はじめに

git 学びたてで, コマンドラインで色々やっていると間違えて不要なファイルをプッシュしちゃったことありませんか? Mac の Finder で自動で作られる .DS_Store なんかは特にそういったことが多いように思います.

今回は, そんな .DS_Store を間違えてプッシュしないようにすべてのリポジトリから gitignore する方法を2つ紹介したいと思います.

パターン1: config/git に ignore ファイルを作る

.gitconfig をいじらずに全リポジトリ共通の gitignore を作成する方法です.

以下の流れですべてのリポジトリ共通の gitignore を設定をすることができます.

  1. ホームディレクトリに .config/git というフォルダを作る
  2. .config/gitignore というファイルを作る
  3. 中身に .DS_Store を書き込む
.config/git/ignore
.DS_Store

コマンドだと以下の流れでできます.

  1. % mkdir -p ~/.config/git
  2. % echo '.DS_Store' >> ~/.config/git/ignore

こちらの方法であれば .gitconfig をいじることなくグローバルな無視リストを追加できます.

注意点としては, .gitconfig の core -> excludesfile に別のファイルを指定していると, 上記で作成したファイルは無効となってしまいます!

一応, 公式でも

core.excludesFile のデフォルト値は $XDG_CONFIG_HOME/git/ignore でなければ $HOME/.config/git/ignore を使います

的なことが書かれているのでこの方法が無難かもしれません.

https://git-scm.com/docs/gitignore

パターン2: .gitignore_global を作成し .gitconfig に登録する

もうひとつやり方があるので紹介します.

.gitignore_global というファイルをホームディレクトリに作成し, そこにパターン1と同じように .DS_Store を追加します.

さらに以下のコマンドで .gitconfig.gitignore_global を登録します.

% git config --global core.excludesfile ~/.gitignore_global

SourceTree ではグローバルな無視リストを追加すると .gitignore_global が作られて自動で .gitconfig との紐付けもやってくれるます.
なので, SourceTree を使っている方はこちらの方法が良いかもしれません.

おわりに

私はゆとりエンジニアなので git の操作は SourceTree を使っているのですが, .gitconfig の仕組みを改めて勉強してみると裏側で何をやっているのか知れて楽しかったです!

引き続き色々と学んだことを発信していけたらと思います.