git Mac 上的 .DS_Store 文件极简教程

.DS_Store 是什么?

使用 Mac 的用户可能会注意到,系统经常会自动在每个目录生成一个隐藏的 .DS_Store 文件。.DS_Store(英文全称 Desktop Services Store)是一种由苹果公司的Mac OS X操作系统所创造的隐藏文件,目的在于存贮目录的自定义属性,例如文件们的图标位置或者是背景色的选择。相当于 Windows 下的 desktop.ini。

删除 .DS_Store

如果你的项目中还没有自动生成的 .DS_Store 文件,那么直接将 .DS_Store 加入到 .gitignore 文件就可以了。如果你的项目中已经存在 .DS_Store 文件,那就需要先从项目中将其删除,再将它加入到 .gitignore。

如下:
删除项目中的所有.DS_Store。这会跳过不在项目中的 .DS_Store
1.find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
将 .DS_Store 加入到 .gitignore
2.echo .DS_Store >> ~/.gitignore
更新项目
3.git add --all
4.git commit -m ‘.DS_Store banished!’
如果你只需要删除磁盘上的 .DS_Store,可以使用下面的命令来删除当前目录及其子目录下的所有.DS_Store 文件:

find . -name ‘*.DS_Store’ -type f -delete

禁用或启用自动生成

禁止.DS_store生成:
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE

恢复.DS_store生成:恢复.DS_store生成:
defaults delete com.apple.desktopservices DSDontWriteNetworkStores

苹果Mac OS X操作系统下,隐藏文件是否显示有很多种设置方法,最简单的要算在Mac终端输入命令。显示/隐藏Mac隐藏文件命令如下(注意其中的空格并且区分大小写):
显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true
隐藏Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false
或者
显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles YES
隐藏Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles NO
输完单击Enter键,退出终端,
重新启动Finder就可以了 重启Finder:[鼠标单击窗口左上角的苹果标志–>强制退出–>Finder–>重新启动]

简单的说Mac每个目录都会有个文件叫.DS_Store,它是用于存储当前文件夹的一些Meta信息。所以每次查看Git目录的状态,如果没有add这个.DS_Store文件,会有Untracked files:的提示,add了它,又会常有Changes not staged for commit:的提示,是不是像个苍蝇一样特别烦?要解决这个烦人的小妖精,我们需要用到.gitignore文件去配置Git目录中需要忽略的文件。
.gitignore文件用于忽略文件,其规范如下
1.所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
2.可以使用标准的 glob 模式匹配。
3.匹配模式最后跟反斜杠(/)说明要忽略的是目录。
4.要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
glob模式要点:

  1. *:任意个任意字符
  2. ?:匹配一个任意字符
    所以,我们只需要在对应的Git目录下,创建一个.gitignore文件,然后配置上.DS_Store即可,步骤如下:
    1.命令行下使用touch .gitignore创建.gitignore文件(已有的直接到第二步)
    wdw:test wdw$ touch .gitignore
    2.open .gitignore,输入.DS_Store 换行再输入*/.DS_Store

没有.gitignore直接添加保存,本来已有.gitignore的在文件最后添加即可

3.保存即可生效,这里是忽略了当前目录的.DS_Store以及其子目录的.DS_Store
这样问题就解决了么?并没有,因为在今后的使用中,我发现我需要在所有Git目录下加这样的.gitignore配置,心都操碎了。有没有办法可以全局配置呢?让这个配置对所有的Git目录都生效。git config可以帮到我们。
git config --list命令可以让你查看现有的配置,(在这里我们就先忽略其他的配置项了,有兴趣的同学可以戳这里做更多的了解)实际上它是一个文件,文件的位置在用户根目录,名称是.gitconfig。以下是添加全局忽略文件的步骤:

  1. 创建~/.gitignore_global文件,把需要全局忽略的文件写入该文件,语法和.gitignore一样
  2. 在~/.gitconfig中引入.gitignore_global文件
    excludesfile = /Users/reon/.gitignore_global
    也可以通过git config --global core.excludesfile/Users/reon/.gitignore_global命令来实现
  3. 配置成功,可以去验证是否生效了
    到这里,忽略文件的操作已经搞定了.

如何删除github上的文件

如果要删除github上本来的文件?

有时候因为某些原因,需要将上传到git上制定的文件删除,但如果只是单纯地删除本地文件,再执行提交操作,删除的只是本地文件,远程的文件依然存在。可以使用下面的命令,先将stage中的文件删除,然后提交,再push到远程,这时github上的文件就不存在了。
例如删除github上的 .DS_Dtore 文件的执行操作,进入到对应目录,在终端中执行以下操作

  1. git rm --cached filename
  2. git commit -m “hehe”
  3. git push origin
    执行完毕,刷新一遍github,你会发现此时想要删除的文件已经消失了.

猜你喜欢

转载自blog.csdn.net/universsky2015/article/details/108544470