Mac 中 Git 如何忽略.DS_Store 文件
Mac中Git如何忽略.DS_Store文件
作者:坚果
公众号:"大前端之旅"
OpenHarmony 布道师,InfoQ 签约作者,CSDN 博客专家,华为云享专家,阿里云专家博主,51CTO 博客首席体验官,开源项目GVA成员之一,专注于大前端技术的分享,包括 Flutter,鸿蒙,小程序,安卓,VUE,JavaScript。
视频教程
Git 中多出来的.DS_Store
由于我是第一次使用 mac,发现每次 git 上传时会多出来.DS_Store 文件,虽然不清楚具体做什么,但看上去并没什么问题。git 一般也是自己一个人单机使用,就算换机也一般是直接换,没有遇到过两个同时使用的时候,上传.DS_Store 也就默认都上传了。
但最近用两个 mac 工作,就发现了问题,一个 mac 提交了修改,第二个 mac 想要拉下来时居然遇到了.DS_Store 文件被修改过需要提交再 merge。所以这个.DS_Store 是什么鬼?
.DS_Store
.DS_Store
文件,是用于存放目录自定义属性(如图表、位置属性)等元数据信息的系统文件,由 Finder 自动创建。虽然所有 .
开头的文件/文件夹默认隐藏(可以使用 Command + Shift + .
显示所有隐藏文件),平时我们看不见,也不影响使用,但是 Git 仍会将其记录下来,即便我只是在同目录下移动文件。所以为了防止某些信息不经意间泄露出来,建议使用某些手段使 Git 忽略 .DS_Store
文件。
Git 中处理方案
方案一:项目设置.gitignore
仅针对 git 的处理最先想到就是设置.gitignore 文件。
.gitignore 文件用于忽略文件,规范如下:
所有空行或者以注释符号 # 开头的行都会被 Git 忽略
可以使用标准的 glob 模式匹配
匹配模式最后跟反斜杠(/)说明要忽略的是目录
要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反
第一个
/
会匹配路径的根目录,举个栗子,”/*.html”会匹配”index.html”,而不是”d/index.html”。通配符
*
匹配任意个任意字符,?
匹配一个任意字符。需要注意的是通配符不会匹配文件路径中的/
,举个栗子,”d/*.html”会匹配”d/index.html”,但不会匹配”d/a/b/c/index.html”。两个连续的星号
有特殊含义:
以
**/
开头表示匹配所有的文件夹,例如**/test.md
匹配所有的 test.md 文件。以
/**
结尾表示匹配文件夹内所有内容,例如a/**
匹配文件夹 a 中所有内容。连续星号
**
前后分别被/
夹住表示匹配 0 或者多层文件夹,例如a/**/b
匹配到a/b
、a/x/b
、a/x/y/b
等。前缀
!
的模式表示如果前面匹配到被忽略,则重新添加回来。如果匹配到的父文件夹还是忽略状态,该文件还是保持忽略状态。如果路径名第一个字符为!
,则需要在前面增加\
进行转义。
对于一些常用的系统、工程文件的.gitignore 文件可以参考这个网站进行设置,这里有很多模板。
针对.DS_Store 文件,在 git 工程文件夹中新建.gitignore 文件,在文件中设置:
对于已经提交的内容,希望 git 能够忽略,但同时并不会删除本地文件,需要在控制台输入以下命令:
方案二:全局设置忽略
虽然每个项目配.gitignore 文件可以成功,但是每个项目都需要配置就有点烦了。我们可以在 git 的全局进行配置来忽略.DS_Store 文件。
设置之前我们先看下现在的 git config 配置情况
实际上 git 配置情况可以在 ~/.gitconfig
文件中查看。
通过 :q!
退出后,我们需要建立一个文件,把需要全局忽略的文件路径写入其中。该文件起名为.gitignore_global:
打开终端,在某一个位置创建 .gitignore_global
文件**(建议在当前用户目录下)**:
打开文件
或者
修改该文件,填入与上方 .gitignore
示例一样的内容
然后对 git 进行全局设置,让 git 忽略.gitignore_global 中的所有文件:
这样就不用每个 git 目录都设置忽略.DS_Store 文件了!
此时终端输入:
如果发现这两行:
就说明已经添加成功了,以后 Git 就不会再记录 .DS_Store
了。
批量移除已有的 .DS_Store
即便后续不会再记录,仓库中的 .DS_Store
都还在,需要手动删除。
终端进入仓库目录,输入:
这样就删除了所有该仓库的 .DS_Store
。重新提交推送即可。
参考链接:
gitignore all .DS_Store files:Stack Overflow 上的提问
常用的系统、工程文件的.gitignore 文件模版可以参考这个网站进行设置。
版权声明: 本文为 InfoQ 作者【坚果】的原创文章。
原文链接:【http://xie.infoq.cn/article/44279cdbbdc8aee62e38e7502】。文章转载请联系作者。
评论