Zenn
🗂

【macOS】.DS_StoreをGit にプッシュしないようにする

2025/03/23に公開

はじめに

macOS を使用していると、ディレクトリごとに .DS_Store という隠しファイルが自動生成されます。
このファイルは Finder の表示設定などを保存するためのものであり、Git リポジトリに含める必要はありません。
しかし、うっかりコミットしてしまうこともあるため、 .DS_Store を Git にプッシュしないように設定する方法を解説します。

.DS_Store を Git にプッシュしない方法

以下のいずれかの方法を実施することで .DS_Store のプッシュを防ぐことができます。

.gitignore に追加する(リポジトリごとの設定)

リポジトリごとに .gitignore.DS_Store を追加することで、以降のコミット対象から除外できます。

# .gitignore に追加
echo .DS_Store >> .gitignore

このコマンドは、現在のディレクトリの .gitignore ファイルに .DS_Store を追加します。.gitignore に記載されたファイルは Git の管理対象から除外されます。

すでに .DS_Store がコミットされてしまっている場合は、以下の手順で削除できます。

# すでにコミットされている .DS_Store を削除
find . -name .DS_Store -print0 | xargs -0 git rm --cached
  • find . -name .DS_Store:カレントディレクトリ以下にあるすべての .DS_Store ファイルを検索
  • -print0:ファイル名の間に改行ではなく NULL 文字を使用(特殊文字を含むファイル名の安全な処理のため)
  • xargs -0 git rm --cached:検索された .DS_Store ファイルを Git のインデックス(キャッシュ)から削除

その後、変更をコミットしてプッシュしましょう。

git commit -m "Remove .DS_Store files"
git push origin main

グローバル設定で .DS_Store を無視する(すべてのリポジトリに適用)

リポジトリごとに .gitignore を設定するのではなく、全ての Git リポジトリで .DS_Store を無視したい場合は、グローバル .gitignore を設定します。

# グローバル .gitignore の設定
git config --global core.excludesfile ~/.gitignore_global

このコマンドは、Git の設定を変更し、グローバルな .gitignore~/.gitignore_global に設定します。

# .gitignore_global に .DS_Store を追加
echo .DS_Store >> ~/.gitignore_global

このコマンドにより、すべての Git リポジトリで .DS_Store が無視されるようになります。

macOS で .DS_Store の生成を無効にする

そもそも .DS_Store ファイルの生成を抑制することも可能です。ただし、Finder の設定が保存されなくなるため、必要に応じて実施してください。

# .DS_Store の作成を無効化
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE
  • defaults write:macOS の設定を変更するコマンド
  • com.apple.desktopservices:Finder の設定に関するキー
  • DSDontWriteNetworkStores -bool TRUE:ネットワークドライブ上で .DS_Store を作成しないように設定

設定を適用するには、Finder を再起動する必要があります。

killall Finder
  • killall Finder:Finder を強制終了し、設定を適用した状態で再起動

この設定により、ネットワークドライブ上で .DS_Store が作成されなくなります。
ただし、ローカルフォルダでは生成されることに注意してください。

まとめ

.DS_Store は Git リポジトリに不要なファイルであるため、以下の方法のいずれかを選択して適用するのが望ましいです。

  • リポジトリごとの .gitignore に追加する → 特定のプロジェクトで .DS_Store を無視したい場合
  • グローバル .gitignore を設定する → すべての Git リポジトリで .DS_Store を無視したい場合
  • Finder の .DS_Store 生成を無効化する.DS_Store 自体を作らせたくない場合

Discussion

ログインするとコメントできます