用苹果电脑做开发,macOS 系统会在你开发的 Git 分支中自动生成一堆 .DS_Store 格式的文件,如果不禁止,稍不留意就会被你推送到 git 上,这类型的文件如果最后被推送到生产环境,会造成安全隐患,需要避免。

手工一个个删除繁琐且痛苦,所以,下面将介绍自动化的方式来解决这个问题。


方法一:禁止自动生成 .DS_Store 格式文件

只需在 macOS 终端执行以下命令,然后重启电脑即可。完成后,再次重新打开你的 dev 环境,查看是否还会生成此类文件。

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

方法二:执行自动删除命令

方法一是我在网上找到的解决方式,但是我测试过对我并不生效,不知道原因是什么。

那么,不禁止电脑生成这些文件,在每次推送到 Git 前,都执行删除命令,自动清除生成的 .DS_Store 文件后再提交即可。

执行自动清除命令前,需要 cd 切换到你分支的根目录下。自动清除命令将从所选文件夹及其包含的所有文件夹中立即删除所有 .DS_Store 文件。

cd to/your/directory

然后,在终端执行下面的命令进行自动删除。此命令也可用于其他类型的文件,只需替换'.DS_Store'为你要删除的任何文件名或类型即可。

find . -name '.DS_Store' -type f -delete

清除后,执行下面的命令查看分支中是否还有这些格式文件的存在。

git status

方法三:通过 .gitignore 文件添加过滤

添加下面的代码到 .gitignore 文件,防止根目录每个子目录中的任何 .DS_Store 文件进入 Git

**/.DS_Store

A leading “**” followed by a slash means match in all directories. For example, “**/foo” matches file or directory “foo” anywhere, the same as pattern “foo“. “**/foo/bar” matches file or directory “bar” anywhere that is directly under directory “foo“.

来自 Git 文档