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 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

你可能感兴趣的:(Git中忽略某些文件,如系统文件.Ds_store等)