前言

众所周知,mac会自动在目录下生成 .DS_Store 的隐藏文件.

什么.DS_Store呢? 这里来一段维基百科的解释.

.DS_Store (英文全称 Desktop Services Store)[1] 是一种由苹果公司Mac OS X操作系统所创造的隐藏文件,目的在于存贮目录)的自定义属性,例如文件们的图标位置或者是背景色的选择。[2]该文件由Finder创建并维护,类似于Microsoft Windows中的desktop.ini文件。

然而这个文件却有着信息泄露的危害

这个隐藏文件会泄露该文件所在目录下所有文件以及目录(即便这些文件是隐藏的或者无权限访问的).


解决方法

方法一 采用全局忽略的方式

创建全局忽略文件

1
2
3
cd ~
touch .gitignore_global
git config --global core.excludesfile ~/.gitignore_global

image-20211224123350305

修改文件内容

进入访达,点击前往菜单,选择个人,打开刚刚创建好的gitignore_global文件。如果你没有打开查看隐藏文件的权限,可以同时按下cmd+shift+.来开关查看隐藏文件。

image-20211224123500817

添加规则

gitignore_global文件中添加

image-20211224123534926

删除已有文件

由于.gitignore只对还没追踪的文件(后面新加入的文件)生效,而之前已经存在的git项目,后面再添加.gitignore是不会生效的,需要

1
git rm -r --cached .

即删除之前上传的.DS_Store文件

但是如果当前命令行窗口不在版本库(又名为仓库,英文名为repository)或未初始化git本地版本管理仓库时

使用该命令会报错,建议先自行解决.

tips:

如果出现这个问题image-20211224130928806

点击这个解决办法


方法二

删除已有的.DS_Store文件

通过进入博客对应的目录,查看隐藏文件即可

全局禁用Mac生成.DS_Store文件

打开“终端”,复制粘贴下面的命令,回车执行,重启Mac即可生效。

  • 禁止.DS_store生成:
1
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE

如果后需需要 恢复.DS_store生成:

1
defaults delete com.apple.desktopservices DSDontWriteNetworkStores

删除已有文件

重复方法一的操作.