跳转至

解决仓库中存在DS_Store的问题

.DS_Store是Mac OS操作系统中,用来存储文件夹的自定义属性的隐藏文件,比如文件的图标位置或背景色,类似于Windows的desktop.ini。当你在Mac中浏览文件夹的时候,系统会自动产生这个文件。

这个文件通常在提交到Git仓库时是不需要的,因为它主要是存储了你自己电脑的一些文件夹设置信息,对其他人或者对项目本身并无任何意义。

要阻止.DS_Store文件被提交到Git仓库,有几种常见的方法:

  1. 在项目的根目录下创建一个.gitignore文件,写入.DS_Store,然后提交这个.gitignore文件。在以后的提交中,Git会自动忽略所有的.DS_Store文件。

  2. 如果你已经提交了.DS_Store文件到仓库,你可以使用git rm --cached .DS_Store命令先从Git仓库中移除它,然后再按照上面的方法添加.gitignore文件。

  3. 如果你想要在全局,也就是所有的Git仓库中都忽略.DS_Store文件,你可以创建或修改你的全局.gitignore文件。在你的用户目录下执行git config --global core.excludesfile ~/.gitignore_global,然后在.gitignore_global文件中写入.DS_Store

  4. 如果你想要彻底禁止Mac创建.DS_Store文件,可以在终端中执行defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true命令。但是这个操作不可逆,并且可能会影响你的文件夹设置,所以除非你非常确定,否则不推荐这个方法。


  1. 第一种方法在gitignore添加的时候,需要写路径或者什么的吗?

在.gitignore文件中添加.DS_Store时,你可以选择是否添加路径。如果你只是简单地写入“.DS_Store”,那么在整个项目的任何地方,所有的.DS_Store文件都将被忽略。

如果你希望只忽略特定路径下的.DS_Store文件,你可以在文件名前添加路径。例如,如果你想忽略src文件夹下的.DS_Store文件,你可以写入“src/.DS_Store”。

同时,如果你希望忽略所有子目录下的.DS_Store文件,你可以在.DS_Store前面添加“/”,写成“/.DS_Store”。

这样,无论.DS_Store文件在哪个子目录下,都会被Git忽略。

注意,.gitignore文件中的每一行都是一个规则,你可以添加多行来忽略多种文件。例如,除了.DS_Store外,还可以添加*.log来忽略所有的日志文件。