Gitで.DS_Storeを確実にコミットできないようにする
macOSでは、Finderがフォルダを開くたびに.DS_Storeファイルを自動生成します。このファイルがGitリポジトリに混入すると、不要なファイルがコミット履歴に残り、チーム開発に支障をきたします。
この記事では、Gitのcore.excludesFile設定を使い、すべてのリポジトリで.DS_Storeを一括除外する方法を解説します。
.DS_Storeの概要と除外すべき理由
.DS_Store(Desktop Services Store)は、macOSが自動的に作成する隠しファイルです。Finderでフォルダを開くと、フォルダごとに以下の情報を記録します。
- アイコンの表示位置
- ウィンドウのサイズや表示設定
- フォルダの背景色や画像
このファイルはmacOS特有のもので他のOSでは不要であるため、Gitリポジトリに誤ってコミットすると、以下の問題が発生します。
- リポジトリの汚染: 開発に不要なファイルがコミット履歴に残る
- 他のOSユーザーへの影響: WindowsやLinuxユーザーにとって不要なファイルが含まれる
- マージコンフリクトの原因: Finderの操作によって頻繁に更新されるため、意図しないコンフリクトが発生する
そのため、.DS_Storeは確実にGitの追跡対象から除外する必要があります。
core.excludesFileを利用して.DS_Storeを除外する
core.excludesFileはGitのグローバル設定で指定する除外ファイルのパス設定で、指定したファイルに記述されたパターンに合致するものをすべてのリポジトリで除外します。
今回はこのcore.excludesFileに設定を追加することで、すべてのリポジトリから.DS_Storeを一括除外します。
手順1. グローバル除外ファイルを作成する
グローバル除外ファイルを作成します。ファイル名や場所は任意ですが、~/.config/git/ignoreが一般的です。
mkdir -p ~/.config/git
touch ~/.config/git/ignore手順2. 除外パターンを追加する
作成したファイルに、除外したいパターンを記述します。
echo ".DS_Store" >> ~/.config/git/ignoreファイルの内容は以下のようになります。
.DS_Store手順3. core.excludesFileを設定する
Gitのグローバル設定で、作成した除外ファイルのパスを指定します。
git config --global core.excludesFile ~/.config/git/ignoreこれで設定は完了です。以降、すべてのリポジトリで.DS_Storeが自動的に除外されます。
動作確認
設定が正しく反映されているか、以下のコマンドで確認します。
git config --global core.excludesFile設定したパスが表示されれば成功です。
/Users/username/.config/git/ignoreまとめ
この記事では、Gitで.DS_Storeを確実にコミットしない方法を解説しました。core.excludesFileの詳細については、Gitの公式ドキュメント(git-config)を参照してください。また.gitignoreの書式についてはgitignoreの公式ドキュメントで詳しく解説されているのであわせて確認すると良いと思います。
.DS_StoreはmacOS特有のファイルで、Gitリポジトリには不要なもの.DS_Storeは普遍的にGitリポジトリでは不要なものなので、core.excludesFileでグローバル除外ファイルを設定するのが良い
