在项目根目录下面 添加 .gitignore文件
文件中每一行表示需要忽略的文件的正则表达式。
.gitignore文件过滤有两种模式,开放模式和保守模式
1. 开放模式负责设置过滤哪些文件和文件夹
例如: /target/ 表示项目根目录下的target文件夹里面所有的内容都会被过滤,不被GIT 跟踪
.classpath 表示项目根目录下的.classpath文件会被过滤,不被GIT跟踪
2. 保守模式负责设置哪些文件不被过滤,也就是哪些文件要被跟踪。
例如:
!/target/*.h 表示target文件夹目录下所有的.h文件将被跟踪
如果你不清楚GIT会跟踪哪些文件,你可以先用git status命令查看一下
$git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .metadata/
# gitignore
像这样的话,就是.metadata文件夹和gitignore被跟踪。
另外别忘记了在.gitignore文件中加入一行.gitignore,否则的话.gitignore将会被传到GIT服务器上
规则写法
1. 在已忽略文件夹中不忽略指定文件夹
/node_modules/*
!/node_modules/layer/
2. 在已忽略文件夹中不忽略指定文件
/node_modules/*
!/node_modules/layer/layer.js
【注意项】注意写法 要忽略的文件夹一定要结尾 /* ,否则不忽略规则将无法生效
3. 其他规则写法 (附)
以斜杠“/”开头表示目录;
以星号“*”通配多个字符;
以问号“?”通配单个字符
以方括号“[]”包含单个字符的匹配列表;
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;
1、忽略文件
*.bak # 忽略所有扩展名为.bak的文件
!keep.bak # 但keep.bak文件除外(不会被忽略)
temp/test.txt # 忽略temp目录下的test.txt文件
temp/*.txt # 忽略temp目录下所有扩展名为.txt的文件
2、忽略目录
temp/ # 忽略temp目录下的所有目录和文件
temp/*/ # 忽略temp目录下的所有目录,但不会忽略该目录下的文件
------------------------Git忽略规则及.gitignore规则不生效的解决办法-----------------------------
在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件)。这个文件每一行保存了一个匹配的规则例如:
# 此为注释 – 将被 Git 忽略
*.a # 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
规则很简单,不做过多解释,但是有时候在项目开发过程中,突然心血来潮想把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
注意:
不要误解了 .gitignore 文件的用途,该文件只能作用于 Untracked Files,也就是那些从来没有被 Git 记录过的文件(自添加以后,从未 add 及 commit 过的文件)。