跳转至

What is /DS_Store on MacOS

.DS_Store 是 macOS 系统创建的一个隐藏文件,存储有关文件夹的元数据(例如文件夹的图标位置、窗口的显示方式、文件排序顺序等)

这个文件由 macOS 的 Finder 自动生成,旨在保存文件夹视图的配置,使得用户每次访问该文件夹时都能恢复相同的视图设置

  • 全名.DS_Store 的全称是 Desktop Services Store
  • 作用:它存储了与文件夹相关的设置,比如:
    • 图标排列方式
    • 窗口大小和位置
    • 文件夹显示模式(如图标视图、列表视图、列视图等)
    • 文件排序顺序
  • 位置:每当你在 macOS 中访问某个文件夹时,该文件夹内就会自动生成 .DS_Store 文件。它通常是隐藏的,因此你不容易看到,除非使用特定命令或配置

.DS_Store完全没用,日常忽略😅

Motivation

当我们使用git push提交一整个文件夹时,会发现,我们在远程仓库提交上去的含有.DS_Store,显得非常不合群和不专业

我们希望提交到远程仓库的内容不包含.DS_Store

很显然我们有两种做法:

  1. 直接写进.gitignore即可🧐
  2. 鉴于这个.DS_Store本身🐦用没用,直接删了也行👍

如何忽略 .DS_Store 文件

  1. Git 忽略:如果你在使用 Git 管理项目代码,可以在 .gitignore 文件中添加 .DS_Store,这样它就不会被提交到版本控制中
    Text Only
    1
    .DS_Store
    
  2. 删除 .DS_Store:如果你希望删除项目中的 .DS_Store 文件,可以使用以下命令:
    Bash
    1
    find . -name .DS_Store -delete
    

Supplementary

我们在这里详细展开讲讲方式1👀

即使你已经将 .DS_Store 添加到 .gitignore,Git 仍然会追踪已经被提交的 .DS_Store 文件。

为了确保 .DS_Store 文件不再出现在 Git 仓库中,你需要先将其从 Git 中移除 (取消当前的追踪 + 以后再也不许追踪):

(1) 检查 .DS_Store 文件是否已被追踪:

Bash
1
git ls-files .DS_Store

如果有输出,表示 .DS_Store 文件已经被 Git 追踪。

(2) 从 Git 中移除 .DS_Store 文件: 使用以下命令将 .DS_Store 从 Git 的版本控制中移除,但保留文件在本地:

Bash
1
git rm --cached .DS_Store

这会从 Git 的索引中删除 .DS_Store 文件,但不会删除你本地的 .DS_Store 文件。

现在,.DS_Store 文件已经被移除并且 .gitignore 文件已经更新,接下来需要将这些更改提交到 Git 仓库:

1. 检查状态

Bash
1
git status

应该看到类似以下的输出:

Bash
1
2
3
4
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
  new file:   .gitignore
  deleted:    .DS_Store

2. add / commit / push

Bash
1
2
3
git add .gitignore
git commit -m "Ignore .DS_Store files"
git push origin main

这个方法适用于所有 “我想使用.gitignore,让git放弃追踪某个文件” 的场景