macOS .DS_Store 并没有 Windows 注册表来的方便;相反地,它还给 Git 使用者带来了麻烦,GitHub 仓库中会出现这些文件。

解决方法是,将 .DS_Store 加入全局的 .gitignore 文件:

将`.DS_Store`加入全局的`.gitignore`文件
1
2
3
4
echo .DS_Store >> ~/.gitignore_global
echo "._.DS_Store" >> ~/.gitignore_global
echo "**/.DS_Store" >> ~/.gitignore_global
echo "**/._.DS_Store" >> ~/.gitignore_global

并使 GitHub 配置生效:

使GitHub配置生效
1
git config --global core.excludesfile ~/.gitignore_global

这样再次使用 git 同步仓库时,GitHub 就不会出现该文件。

删除已提交的 .DS_Store 文件:

删除已提交的`.DS_Store`文件
1
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch

删除本地的 .DS_Store 文件(仅工作目录):

删除本地的`.DS_Store`文件(仅工作目录)
1
find . -name '*.DS_Store' -type f -delete

并禁止这种文件生成:

禁止`.DS_Store`生成
1
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE

如果允许生成,则执行:

允许`.DS_Store`生成
1
defaults delete com.apple.desktopservices DSDontWriteNetworkStores