文章导航
在 git 中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如果没有这个文件,则需自己手工建立此文件)。
1. java开发示例
下面这个可以直接拿来用,基本包含了常用的 IDE
/target/
!.mvn/wrapper/maven-wrapper.jar
### STS ###
.apt_generated
.classpath
.factorypath
.settings
.springBeans
.sts4-cache
bin/
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/build/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
### vscode ###
.vscode
### gradle
.gradle
/build/
!gradle/wrapper/gradle-wrapper.jar
### mvn
.mvn
log/
### test ng result ###
test-output/
2. .gitignore 规则示例:
# 此为注释,将被 Git 忽略
*.sample # 忽略所有 .sample 结尾的文件
!lib.sample # 但 lib.sample 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括子目录中的 /TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 忽略 doc/notes.txt 但不包括 doc/server/arch.txt
**/book.json # 忽略所有目录下的 book.json 文件,包括子目录(需要 git 1.8.2 及其以上的版本才支持)
**/book/book.json # 忽略任意层级下的 book/book.json 文件
3. 文件 .gitignore 的格式规范:
• 所有空行或者以注释符号 # 开头的行都会被 Git 忽略
• 可以使用标准的 glob 模式匹配
• 匹配模式最后跟反斜杠(/)说明要忽略的是目录
• 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反
4. 所谓的 glob 模式是指 shell 所使用的简化了的正则表达式
1. * 匹配零个或多个任意字符
2. ? 只匹配一个任意字符
3. [abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c)
4. [0-9] 表示匹配 0到9 中的任意一个数字, [a-c] 匹配 a到c 中的任意一个字母
5. .gitignore 规则不生效的解决办法
把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交。
git rm -r --cached .
git add .
git commit -m 'update .gitignore'