在代码开发过程中,我们总会遇到一些文件是不需要提交到代码仓库中的,比如Eclipse或IDEA等开发工具在构建项目中产生的本地环境的一些配置文件,如.project 和 .classpath 或 .iml等文件,这些文件只跟本地环境有关,每个人的文件内容都不一样,如果提交上去,会造成一堆冲突而且这些文件对于代码本身一点用也没有,所以我们最好在提交代码时,能将这些不需要提交的文件给忽略掉,幸好,git为我们提供了很好用的功能来处理这类问题。
一、创建.gitignore文件
在项目的根目录(也可放在其他位置)中创建.gitignore文件,文件名必须要带这个点,如下图所示
二、添加忽略规则
在.gitignore文件中,每添加一行,表示一个规则,语法如下:
# 表示注释,可以使用反斜杠进行转义
* 通配多个字符
** 匹配多级目录,可在开始,中间,结束
? 通配单个字符
[] 匹配单个字符列表
! 表示不忽略(跟踪)匹配到的文件或目录
/ 表示指定目录,如果匹配规则以 / 开头则表示从根目录开始查找指定规则;如果匹配规则以 / 结尾,则是表示匹配该目录及目录下的文件,但如果指定的是文件,则不会匹配
三、示例
# 添加忽略规则
*.log : 忽略所有后缀为log的文件
a/**/b : 忽略在a目录下所有b文件, 如"a/b", "a/x/b", "a/x/y/b" 等等
**/target/ : 忽略所有的target目录,无论是在哪一级
?.txt : 忽略文件名只有一字符的后缀为txt的文件,如a.txt会被忽略,而ab.txt则不会被忽略
a[12].txt: 忽略a1.txt和a2.txt,如a3或其他的文件则不会被忽略
!/bin/start.sh : 不忽略bin目录下的start.sh文件
/bin : 忽略根目录下的bin文件,而不是bin目录
bin/ : 忽略当前目录(相对于.gitignore文件) 及该目录下的所有文件,如果当前目录下的bin不是目录,而是文件,则该文件不会被忽略
四、规则不生效
.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
git rm -r --cached <文件>
git add <文件>
git commit -m '注释'