记录一下 Git 全局忽略 .DS_Store
的设置。
macOS 中每个文件夹下都存在一个 .DS_Store
文件,是一种用来存储该文件夹下的文件图标位置属性、文件位置等元数据信息的系统文件。平时我们看不见 .DS_Store
,它的存在也不影响使用,但是 Git 仓库会记录下它。有时候我根本没有修改任何文件,仅仅是移动了一下文件,打开 GitHub Desktop,就会提醒我 .DS_Store
修改了,强迫症表示非常难受。同时,由于 .DS_Store
会存储元数据,可能有一些信息在不经意间泄露出去,不太安全。
虽然可以单独在每个 Git 仓库新建 .gitignore
文件来忽略 .DS_Store
,但还是全局忽略来得直截了当一些。
# 全局忽略 .DS_Store
打开终端(Terminal),进入用户(Home)文件夹。
- 查看 Git 配置情况
git config --list
1
默认输出结果应该是这样的:
credential.helper=osxkeychain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
1
2
3
4
5
2
3
4
5
- 在用户文件夹下新建一个文件
.gitignore_global
:
touch ~/.gitignore_global
1
或者手动新建也可以。
- 修改
.gitignore_global
,写入如下内容:
.DS_Store
**/.DS_Store
.DS_Store?
1
2
3
2
3
如果还需要忽略其他类型的文件,可以前往 gitignore.io 获取相应配置文件。
- 对 Git 进行全局设置:
git config --global core.excludesfile ~/.gitignore_global
1
然后就会发现 .gitconfig
文件里增加了 2 行:
[core]
excludesfile = /Users/[username]/.gitignore_global
1
2
2
这样,就将 .DS_Store
加入了全局忽略列表。在这之后,Git 就会忽略电脑中所有的 .DS_Store
文件,但是之前仓库里的 .DS_Store
文件还在,需要进行删除。
# 删除已有仓库中的 .DS_Store
删除已有 Git 仓库中的 .DS_Store
其实很简单,进入 Git 仓库,执行:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
1
就会删除该目录下所有的 .DS_Store
文件。比如我的博客仓库,输出结果就是这样的:
rm 'docs/.DS_Store'
rm 'docs/.vuepress/.DS_Store'
rm 'docs/.vuepress/public/.DS_Store'
rm 'docs/.vuepress/public/assets/.DS_Store'
rm 'docs/.vuepress/public/assets/img/.DS_Store'
rm 'docs/.vuepress/public/images/.DS_Store'
rm 'docs/_posts/.DS_Store'
rm 'docs/about/.DS_Store'
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
看见这个输出结果就很爽,不用一个一个手动删除,一下子就全部删除掉了,再也不用忍受烦人的 .DS_Store
了!