1 问题背景
默认情况下,Mac OS X的Finder程序会在进行存取的每个目录下创建.DS_Store
文件。但是这些文件我们是不需要上传到Git仓库的。其实在所有的操作系统中,系统都会自动创建一下系统文件,如.Trashes
、ehthumbs.db
、Thumbs.db
等。
2 问题的解决
Git提供了忽略某些文件的功能,通过.gitignore
文件配置,即可忽略特定的文件上传到Git仓库。可在当前目录配置或在全局配置,接下来将分别介绍配置的方法。
2.1 仅在当前项目设置
- 首先在根目录下创建
.gitignore
文件
touch .gitignore
- 在
.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
- 运行如下命令,将设置添加到当前的仓库中
git add .gitignore
git commit -m '.DS_Store banished!'
- 推送到远程仓库(以master为例)
git push origin master
注意: 如果运行上述命令没有生效,解决方法参见本文的第三部分
2.2 全局设置
- 创建如下文件并打开
touch ~/.gitignore_global
vi ~/.gitignore_global
- 在文件中添加需要忽律的文件名或规则
# 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
- 全局设置git需要忽略的文件
git config --global core.excludesfile ~/.gitignore_global
- 在当前项目中生效
git add .
git commit -m '忽略文件'
- 推送到远程仓库
git push origin master
3 没有生效的原因和解决方法
gitignore
没有生效的原因是git缓存的问题,需要更新缓存之后重新提交
首先,更新缓存,运行如下命令
# git rm -r --cached .
# git add .
git commit -m 'update .gitignore'
然后,推送到远程分支
git push origin master # 也可以是其他分支
网友评论