如何忽略所有目录中的 .DS_Store?

不带开头斜杠的 .DS_Store 规则可覆盖 .gitignore 下各层级的同名文件。如果 Git 仍提示它已修改,先检查文件是否已被跟踪。

1. 添加正确范围的规则

将下面这一行加到根目录 .gitignore,可在项目内共享忽略规则。/.DS_Store 只覆盖根目录副本。如果只是个人跨仓库偏好,可使用全局忽略文件。

.DS_Store

文件为什么被全局规则忽略?

2. 区分被忽略与已跟踪文件

对未跟踪的示例副本,检查各路径匹配的规则:

git check-ignore -v -- .DS_Store assets/.DS_Store

再检查这两个具体路径是否已在索引中。详细模式的 check-ignore 通常不会显示已跟踪文件,匹配忽略规则也不会停止跟踪。

git ls-files -- .DS_Store assets/.DS_Store

3. 停止跟踪具体副本

如果 assets/.DS_Store 已被跟踪,先检查状态并保存需要的本地内容,再只移除这一项索引记录:

git rm --cached -- assets/.DS_Store

提交前检查暂存的删除。--cached 保留当前本地副本,但协作者拉取删除提交后,其已跟踪副本可能被移除。只对已检查的路径重复操作,避免广泛删除文件或重建整个索引。

git diff --cached --name-status

如何忽略已经被 Git 跟踪的文件?

准确行为与更多细节请参阅官方说明: Git 官方文档 · git rm 官方文档 · git check-ignore 官方文档