.gitignore简介
一般来说每个Git项目中都需要一个
.gitignore
文件,这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中。实际项目中,很多文件都是不需要版本管理的,比如Python的.pyc文件和一些包含密码的配置文件等等。这个文件的内容是一些规则,Git会根据这些规则来判断是否将文件添加到版本控制中。
规则说明
git 对于 .ignore 配置文件是按行从上到下进行规则匹配的
1、配置语法
- 以斜杠“/”开头表示目录;
- 以星号“*”通配多个字符;
- 以问号“?”通配单个字符
- 以方括号“[]”包含单个字符的匹配列表;
- 以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;
2、示例说明
- /fd1/*
- 忽略目录 fd1 下的全部内容;注意,不管是根目录下的 /fd1/ 目录,还是某个子目录 /child/fd1/ 目录,都会被忽略
- *.zip
- 忽略所有zip文件
- !one.zip
- 不能忽略one.zip文件,主要是为通配符列出特例
如何写
对于不同语言,代码有不同的忽略项,具体可以参考GitHub给出的标准规范写法
对于Objective-C或Swift而言,参照其他资源写了简单能用的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Xcode
build/
DerivedData/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
profile
## Other
*.moved-aside
# macOS
.DS_Store
如何用
1、单一工程设置
针对单一工程排除文件,这种方式会让这个工程的所有修改者在克隆代码的同时,也能克隆到过滤规则,而不用自己再写一份,这就能保证所有修改者应用的都是同一份规则,而不是张三自己有一套过滤规则,李四又使用另一套过滤规则
- 工程根目录下建立
.gitignore
文件,将要排除的文件或目录 写到.gitignore
这个文件中
2、全局设置
全局设置排除文件,这会在全局起作用,只要是Git管理的工程,在提交时都会自动排除不在控制范围内的文件或目录。这种方法对开发者来说,比较省事,只要一次全局配置,不用每次建立工程都要配置一遍过滤规则。但是这不保证其他的开发者在克隆你的代码后,他们那边的规则跟你的是一样的,这就带来了代码提交过程中的各种冲突问题。
- 建立一个
.gitignore_global
文件,把要排除的文件写进去(命名就按照全局来) - 在这里我们不规定一定要把
.gitignore_global
文件放到某个工程下面,而是任何地方,比如我们这里放到了/Users/macName 目录下 - 使用命令方式可以配置全局排除文件
git config --global core.excludesfile ~/.gitignore
,你会发现在~/.gitconfig
文件中会出现excludesfile = /Users/macName/.gitignore_global
。
注意事项
-
.gitignore
文件只能作用于Untracked
文件,也就是那些从来没有被 Git 记录过的文件(自添加以后,从未add
及commit
过的文件),如果文件曾经被 Git 记录过,那么.gitignore
就对它们完全无效。那么解决方法就是先把本地缓存删除(改变成Untracked
状态),然后再提交1 2 3 4
// 不能忘记末尾的点 git rm -r --cached . git add . git commit -m 'update .gitignore'