人類 VS .DS_Store

MacにはFinderのアプリが生むファイルとして.DS_Storeというものがある。

これが非常に邪魔くさく、特に害はないのだけどgitの管理下に入っちゃったりしてすごくうざくなってしまうという事例が多発してしまう。

ということで.DS_Storeをいかにして排除するかというメモ。

.DS_Storeとは

まず.DS_Storeとはなんなのか。そもそも削除してしまって大丈夫なものなのか。どのタイミングでポンポンと量産されているのか。

Macのシステムが各ディレクトリに勝手に生成するファインダーファイルで、ファイルやフォルダを開いた際の位置や大きさや、背景色、カスタムアイコンなどの情報を記憶しているメタデータの不可視なファイル。ディレクトリの操作(フォルダやファイルを移動や開閉など)を行った際に自動的に生成、または更新されるファイル。すべてのディレクトリにあります。よって、このデータがあるので、次回に同じ物を開く時にもまた同じサイズ、位置で開きます http://d.hatena.ne.jp/ogohnohito/20090531/p1

とのことです。以下の記事が詳しいです。

“.DS_Store”ってどんなファイル? - まりふのひと

.DS_Store とは - Amarronの日記

決戦

今いるディレクトリ以下の.DS_Storeは以下のようにすれば見つけられます。

$ find . -name .DS_Store

これを利用して、以下のようにすれば一発で全部gitのトラッキング含めて削除できます。

$ find . -name .DS_Store -print0 | xargs -0 git rm

そしたら.gitignore.DS_Storeを追加すればokです。

# .gitignore
# .DS_Store banished!
.DS_Store

そのほか

  • 徹底的に。。。

常に.DS_Storeを除外してしまいたいというくらい憎んでしまったときには、以下を参考にして設定してしまえばいいと思う。

Git で常に除外したい設定を .gitconfig で設定する方法 | ウェブル

  • .gitignoreまとめ

ここで主要な.gitignoreがまとめられてます。めっちゃ参考になる、すごい。

github/gitignore · GitHub

参考サイト

.DS_Store とは - Amarronの日記

Gitでファイルを削除する | アルミナ解析室

gitリポジトリから.DS_Storeをまとめて削除する方法 - memo.yomukaku.net