【macOS】.DS_StoreをGit にプッシュしないようにする
はじめに
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
が無視されるようになります。
.DS_Store
の生成を無効にする
macOS で そもそも .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