すべてのディレクトリで .DS_Store を無視するには?

先頭にスラッシュのない .DS_Store ルールは、.gitignore より下の各階層にある同名ファイルに一致します。変更が表示される場合は、追跡済みかを確認してください。

1. 適切な範囲のルールを追加する

プロジェクトで共有する場合は、ルートの .gitignore に次の1行を追加します。/.DS_Store ではルートのコピーだけが対象です。複数リポジトリで使う個人設定なら、グローバル除外ファイルを使えます。

.DS_Store

グローバルルールでファイルが無視されるのはなぜ?

2. 無視対象と追跡済みを区別する

例の未追跡コピーについて、各パスに一致するルールを調べます。

git check-ignore -v -- .DS_Store assets/.DS_Store

次に、この2つの具体的なパスがインデックスにあるかを確認します。check-ignore の詳細表示でも追跡済みファイルは通常表示されません。除外ルールに一致しても追跡は止まりません。

git ls-files -- .DS_Store assets/.DS_Store

3. 特定のコピーの追跡を止める

assets/.DS_Store が追跡済みなら、状態を確認して必要なローカル作業を保存した後、このインデックス項目だけを削除します。

git rm --cached -- assets/.DS_Store

コミット前にステージされた削除を確認します。--cached は現在のローカルコピーを残しますが、共同作業者が削除コミットを取得すると、その追跡済みコピーが消える場合があります。確認したパスだけを処理し、広範なファイル削除やインデックス全体の再構築は避けてください。

git diff --cached --name-status

Git がすでに追跡しているファイルを無視するには?

正確な動作や詳細は、公式の資料を参照してください。 Git のドキュメント · git rm の公式ドキュメント · git check-ignore の公式ドキュメント