做混剪素材网站,建设网络平台交印花税,佛山外贸网站建设行情,网络营销顾问我们在github上经常看到某些仓库里面包含了.DS_Store文件#xff0c;或者某些sdk的压缩包里面可以看到#xff0c;这都是由于随着git的提交把这类文件也提交到仓库#xff0c;压缩也是一样#xff0c;压缩这个先留着后面处理。 Mac上的.DS_Store文件
.DS_Store 文件#… 我们在github上经常看到某些仓库里面包含了.DS_Store文件或者某些sdk的压缩包里面可以看到这都是由于随着git的提交把这类文件也提交到仓库压缩也是一样压缩这个先留着后面处理。 Mac上的.DS_Store文件
.DS_Store 文件是用于存放目录自定义属性如图表、位置属性等元数据信息的系统文件由 Finder 自动创建。虽然所有 . 开头的文件/文件夹默认隐藏可以使用 Command Shift . 显示所有隐藏文件平时我们看不见也不影响使用但是 Git 仍会将其记录下来即便我只是在同目录下移动文件。多人协作时Git会发生.DS_Store冲突这个比较难搞而且极可能泄露一些信息综合起来最好的处理办法是代码仓库不要有这样的文件。
Git多人协作.DS_Store的处理方案
方法1可视化工具提交代码文件
最直接的办法使用可视化提交工具适合于任何人提交时候不要勾选.DS_Store。例如Android studio自带的可视化工具HBuilder自带的可视化工具以及其他单纯的代码管理工具。
方法 2项目目录设置.gitignore
不论是git/svn对于无关的文件包括项目编译过程中的中间文件我们都选择忽略处理这样就不会提交到仓库了。 仅针对git的处理就是设置.gitignore文件。
.gitignore配置规则
所有空行或者以注释符号 开头的行都会被 Git 忽略可以使用标准的 glob 模式匹配匹配模式最后跟反斜杠/说明要忽略的是目录 例如xxx/要忽略指定模式以外的文件或目录可以在模式前加上“!”取反第一个 / 会匹配路径的根目录例如”/*.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文件可以参考这个网站进行设置这里有很多模板。
忽略文件.gitignore配置
忽略配置.DS_Store文件在git工程文件夹中新建.gitignore文件在文件中添加
.DS_Store
**/.DS_Store
.DS_Store?已经提交的内容希望git能够忽略但同时并不会删除本地文件需要在控制台输入以下命令
git rm -r --cached $file_path方法3全局设置忽略
虽然每个项目配.gitignore文件可以成功但是每个项目都需要配置就有点烦。我们可以在git的全局进行配置来忽略.DS_Store文件。
设置之前我们先看下现在的git config配置情况
git config --list实际上git配置情况可以在 ~/.gitconfig 文件中查看。
vi ~/.gitconfig通过 :q! 退出后我们需要建立一个文件把需要全局忽略的文件路径写入其中。该文件起名为.gitignore_global
打开终端在某一个位置创建 .gitignore_global 文件建议在当前用户目录下
touch ~/.gitignore_global打开文件
vi ~/.gitconfig或者
open ~/.gitignore_global修改该文件填入与上方 .gitignore 示例一样的内容
.DS_Store
**/.DS_Store
.DS_Store?然后对git进行全局设置让git忽略.gitignore_global中的所有文件
git config --global core.excludesfile ~/.gitignore_global这样就不用每个git目录都设置忽略.DS_Store文件了
此时终端输入
git config --list如果有下面这行
core.excludesfile /Users/[username]/.gitignore_global就说明已经添加成功了以后 Git 就不会再记录 .DS_Store 了。
批量移除仓库已有的 .DS_Store
即便后续不会再记录仓库中的 .DS_Store 都还在需要手动删除。
终端进入仓库目录输入
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch这样就删除了所有该仓库的 .DS_Store 。重新提交推送即可git add . git commit git push。
本文参考 Mac中Git如何忽略.DS_Store文件,有修改