git環境での.DS_Storeの撲滅

 いやぁ、macOSで作業していると、.DS_Store残った状態で、ついそのままGithubとかに上げちゃうよね。習慣的に「git add .」するのはいかんとか言われるけどさ...

 macOS的には外部ボリュームでの自動生成は抑制できるのだけど、ローカルのシステムでは生成を抑制できない。Finderが参照しているからね。

 かといって、.gitignoreを毎回作るのも面倒ではある。

 まずは再現確認で、.DS_Storeができるのを確認してみる。

 % mkdir test-repo

 % cd test-repo

 % git init

 Initialized empty Git repository in /Users/kinneko/Documents/test-repo/.git/

 % ls -al

 total 0

 drwxr-xr-x@ 3 kinneko staff 96 5 15 15:51 .

 drwx------@ 66 kinneko staff 2112 5 15 15:51 ..

 drwxr-xr-x 9 kinneko staff 288 5 15 15:51 .git

 Finderからフォルダ作っただけでは、.DS_Storeできない。

 % ls -al

 total 0

 drwxr-xr-x@ 4 kinneko staff 128 5 15 15:53 .

 drwx------@ 66 kinneko staff 2112 5 15 15:51 ..

 drwxr-xr-x 9 kinneko staff 288 5 15 15:51 .git

 drwxr-xr-x 2 kinneko staff 64 5 15 15:53 名称未設定フォルダ

 ファイルを作ってFinderでアイコン表示にして移動してもできないな。

 % touch test.txt

 ファイルをエディタで開いて編集してもできない。いろいろやってみてもできないな...

 Finderでファイルを複製したらできた。

 % ls -al

 total 32

 drwxr-xr-x@ 6 kinneko staff 192 5 15 15:57 .

 drwx------@ 66 kinneko staff 2112 5 15 15:51 ..

 -rw-r--r--@ 1 kinneko staff 6148 5 15 15:57 .DS_Store

 drwxr-xr-x 9 kinneko staff 288 5 15 15:51 .git

 -rw-r--r--@ 1 kinneko staff 1 5 15 15:55 test.txt

 -rw-r--r--@ 1 kinneko staff 1 5 15 15:55 testのコピー.txt

 gitにも認識されている。

 % git status

 On branch main

 No commits yet

 Untracked files:

 (use "git add ..." to include in what will be committed)

 .DS_Store

 test.txt

 "test\343\201\256\343\202\263\343\203\224\343\203\274.txt"

 nothing added to commit but untracked files present (use "git add" to track)

 ここからが本番。

 gitのテンプレートディレクトリ機能を使って、.DS_Storeを自動的に無視するように設定する。

 % mkdir -p ~/.git-templates/info/

 % echo ".DS_Store" > ~/.git-templates/info/exclude

 % git config --global init.templatedir '~/.git-templates'

 先ほどと同様にリポジトリを作成してみる。

 % mkdir test-repo2

 % cd test-repo2

 % git init

 Initialized empty Git repository in /Users/kinneko/Documents/test-repo2/.git/

 2つのファイルを先ほどのディレクトリからコピっただけでは、.DS_Storeはできない。

 % ls -al

 total 16

 drwxr-xr-x 5 kinneko staff 160 5 15 16:10 .

 drwx------@ 67 kinneko staff 2144 5 15 16:09 ..

 drwxr-xr-x 7 kinneko staff 224 5 15 16:09 .git

 -rw-r--r--@ 1 kinneko staff 1 5 15 15:55 test.txt

 -rw-r--r--@ 1 kinneko staff 1 5 15 15:55 testのコピー.txt

 Finderをアイコン表示にしてアイコンを少し移動したらできた。

 % ls -al

 total 32

 drwxr-xr-x 6 kinneko staff 192 5 15 16:11 .

 drwx------@ 67 kinneko staff 2144 5 15 16:09 ..

 -rw-r--r--@ 1 kinneko staff 6148 5 15 16:11 .DS_Store

 drwxr-xr-x 7 kinneko staff 224 5 15 16:09 .git

 -rw-r--r--@ 1 kinneko staff 1 5 15 15:55 test.txt

 -rw-r--r--@ 1 kinneko staff 1 5 15 15:55 testのコピー.txt

 gitの管理下にあるファイルを確認してみる。

 % git status

 On branch main

 No commits yet

 Untracked files:

 (use "git add ..." to include in what will be committed)

 test.txt

 "test\343\201\256\343\202\263\343\203\224\343\203\274.txt"

 nothing added to commit but untracked files present (use "git add" to track)

 おおー、gitの管理外になっている。

 ぜんぶのマシン環境・ユーザー環境にこれやるのはめんどいけど、しょうがないね。


オリジナル投稿:
git環境での.DS_Storeの撲滅|kinneko|pixivFANBOX
https://kinneko.fanbox.cc/posts/9885233