Git中忽略某些文件,如系统文件.Ds_store等

1 问题背景 默认情况下,Mac OS X的Finder程序会在进行存取的每个目录下创建.DS_Store文件。但是这些文件我们是不需要上传到Git仓库的。其实在所有的操作系统中,系统都会自动创建一下系统文件,如.Trashesehthumbs.dbThumbs.db等。
2 问题的解决 Git提供了忽略某些文件的功能,通过.gitignore文件配置,即可忽略特定的文件上传到Git仓库。可在当前目录配置或在全局配置,接下来将分别介绍配置的方法。
2.1 仅在当前项目设置

  1. 首先在根目录下创建.gitignore文件
touch .gitignore

  1. .gitignore文件中添加需要忽略的文件名或规则,规则如下:
  • 忽略特定的文件:test.txt
  • 忽律目录:.idea/
  • 忽略每一类的文件:*.pyc
    如:
# Compiled source # ################### *.com *.class *.dll *.exe *.o *.so# Packages # ############ # it's better to unpack these files and commit the raw source # git has its own built in compression methods *.7z *.dmg *.gz *.iso *.jar *.rar *.tar *.zip# Logs and databases # ###################### *.log *.sql *.sqlite# OS generated files # ###################### .DS_Store .DS_Store? ._* .Spotlight-V100 .Trashes ehthumbs.db Thumbs.db

  1. 运行如下命令,将设置添加到当前的仓库中
git add .gitignore git commit -m '.DS_Store banished!'

  1. 推送到远程仓库(以master为例)
git push origin master

注意: 如果运行上述命令没有生效,解决方法参见本文的第三部分
2.2 全局设置
  1. 创建如下文件并打开
touch ~/.gitignore_global vi ~/.gitignore_global

  1. 在文件中添加需要忽律的文件名或规则
# Compiled source # ################### *.com *.class *.dll *.exe *.o *.so# Packages # ############ # it's better to unpack these files and commit the raw source # git has its own built in compression methods *.7z *.dmg *.gz *.iso *.jar *.rar *.tar *.zip# Logs and databases # ###################### *.log *.sql *.sqlite# OS generated files # ###################### .DS_Store .DS_Store? ._* .Spotlight-V100 .Trashes ehthumbs.db Thumbs.db

  1. 全局设置git需要忽略的文件
git config --global core.excludesfile ~/.gitignore_global

  1. 在当前项目中生效
git add . git commit -m '忽略文件'

  1. 推送到远程仓库
git push origin master

3 没有生效的原因和解决方法 gitignore 没有生效的原因是git缓存的问题,需要更新缓存之后重新提交
【Git中忽略某些文件,如系统文件.Ds_store等】首先,更新缓存,运行如下命令
# git rm -r --cached .# git add . git commit -m 'update .gitignore'

然后,推送到远程分支
git push origin master # 也可以是其他分支

参考文献:
[1] https://stackoverflow.com/questions/107701/how-can-i-remove-ds-store-files-from-a-git-repository#new-answer

    推荐阅读