.gitignore文件
在利用Git的过程中,我们喜欢有的文件好比日记,暂时文件,编译的中心文件等不要提交到代码堆栈,这时就要设置相应的忽略规则,来忽略这些文件的提交。
留意:如果你创建.gitignore文件之前就push了某一文件,那么纵然你在.gitignore文件中写入过滤该文件的规则,该规则也不会起作用,git仍旧会对该文件举行版本管理。
Git忽略规则以及优先级
具体的忽略规则可以参考官方英文文档。
在 .gitingore 文件中,每一行指定一个忽略规则,Git 查抄忽略规则的时间有多个泉源,它的优先级如下(由高到低):
- 从下令行中读取可用的忽略规则
- 当前目次界说的规则
- 父级目次界说的规则,依次递推,目次结构较高的.gitignore文件被较近的.gitignore文件中类似的设置所覆盖
- .git/info/exclude文件中界说的规则
- core.excludesfile中界说的全局规则
.gitignore文件忽略规则
- 空格不匹配恣意文件,可作为分隔符,方便阅读。
- #用于表明,\表现转义(如需利用实体\,则要加引号"\")。
- *可以匹配任何字符(0或多个)。
- ?可以匹配单个字符。(不可以匹配/)
- /用于分隔目次:
- 当/在开头时,表现从.gitignore文件地点的根目次开始匹配。
- 当/在末了时,只匹配目次及该目次下面的全部内容,否则同名的目次和文件都将匹配。
- !开头的模式标识否定,该文件将会再次被包罗,如果打扫了该文件的父级目次,则利用!也不会再次被包罗。
- []通常用于匹配一个字符列表,如:a[mn]z可匹配amz和anz。
- **用于匹配多级目次,如a/**/b可匹配a/b,a/x/b,a/x/y/b。
留意:git 对于 .gitignore设置文件是按行从上到下举行规则匹配的。
常用匹配示例:
- #: 表现此为表明,将被Git忽略。
- *:表现忽略全部。
- */:表现忽略全部目次。
- 1.txt: 忽略恣意目次(当前目次即根目次及其子文件夹)下的1.txt的文件夹或同名文件,比方1.txt,/pojo/1.txt,/pojo/a/1.txt,如果文件夹则该文件夹下的全部内容都会被忽略。
- *.txt: 忽略恣意目次(当前目次即根目次及其子文件夹)下的全部以.txt末了的文件夹或文件,如果文件夹则该文件夹下的全部内容都会被忽略。
- /1.txt:忽略根路径下的1.txt的文件夹或同名文件,如果文件夹则该文件夹下的全部内容都会被忽略。
- /*.txt: 忽略根路径下的全部以.txt末了的文件夹或文件,如果文件夹则该文件夹下的全部内容都会被忽略,不忽略 /pojo/1.txt。
- pojo:忽略恣意目次(当前目次即根目次及其子文件夹)下的pojo文件夹或同名文件,如果文件夹则该文件夹下的全部内容都会被忽略。
- /pojo: 忽略根目次下的pojo文件夹或同名文件,如果文件夹则该文件夹下的全部内容都会被忽略。
- pojo/: 忽略目次 pojo下的全部内容;留意,不管是根目次下的/pojo/目次,照旧某个目次下的 /child/pojo/,以及pojo文件夹内里的全部内容都会被忽略,同时忽略pojo文件夹,以pojo定名的文件不会忽略。
- pojo/*:忽略当前路径下pojo文件夹下的全部内容,pojo文件夹不忽略。
- /pojo/: 忽略根目次下的pojo文件夹,该文件夹下的全部内容都会被忽略,以pojo定名的文件不会忽略。
- pojo/1.txt:忽略当前路径下的pojo下的1.txt的文件夹或同名文件,如果文件夹则该文件夹下的全部内容都会被忽略,不忽略pojo文件夹。
- /pojo/1.txt:忽略根目次下的pojo文件下的1.txt的文件夹或同名文件,如果文件夹则该文件夹下的全部内容都会被忽略,不忽略pojo文件夹。
- pojo/*.txt: 忽略当前路径下的pojo文件夹下全部以.txt末了的文件夹或文件,如果文件夹则该文件夹下的全部内容都会被忽略,不忽略pojo/common/1.txt,不忽略/a/pojo/1.txt,不忽略pojo文件夹。
- pojo/1.txt/*:忽略当前路径下的pojo文件夹下的1.txt文件夹中的全部文件,1.txt文件夹不忽略。
- **/pojo: 忽略恣意目次下的pojo文件夹或同名文件,如果文件夹则该文件夹下的全部内容都会被忽略。/pojo,/pojo/1.txt,/a/pojo,/a/pojo/1.txt,a/b/pojo等。
- a/**/b: 忽略当前路径下的以a文件夹为开始,中心可以有0个或恣意个目次的b文件夹或同名文件,如果文件夹则该文件夹下的全部内容都会被忽略,a/b,a/x/b,a/x/y/b,a/x/y/b/1.txt等。
- /pojo/*和!/pojo/1.txt: 忽略pojo目次下的全部文件但不忽略pojo目次下的1.txt文件,pojo文件夹不忽略。
留意上面的/pojo/*不能写为/pojo/,否则父目次被前面的规则扫撤除了,1.txt文件固然加了!过滤规则,也不会收效!
有三种方法可以实现忽略Git中不想提交的文件。
1、在Git项目中界说 .gitignore 文件(优先级最高,保举!)
这种方式通过在项目的某个文件夹下界说 .gitignore 文件,在该文件中界说相应的忽略规则,来管理当前文件夹及其子文件夹下的文件的Git提交举动。
.gitignore 文件是可以提交到公有堆栈中,这就为该项目下的全部开发者都共享一套界说好的忽略规则。
在 .gitingore 文件中,遵照相应的语法,在每一行指定一个忽略规则。如:
样例一:
- HELP.md
- target/
- !.mvn/wrapper/maven-wrapper.jar
- !**/src/main/**/target/
- !**/src/test/**/target/
- ### STS ###
- .apt_generated
- .classpath
- .factorypath
- .project
- .settings
- .springBeans
- .sts4-cache
- ### IntelliJ IDEA ###
- .idea
- *.iws
- *.iml
- *.ipr
- mvnw
- mvnw.cmd
- .mvn
- ### NetBeans ###
- /nbproject/private/
- /nbbuild/
- /dist/
- /nbdist/
- /.nb-gradle/
- build/
- logs/
- !**/src/main/**/build/
- !**/src/test/**/build/
- ### VS Code ###
- .vscode/
复制代码 样例二:
2、在Git项目的设置中指定打扫文件
这种方式只是暂时指定该项目的举动,须要编辑当前项目下的 .git/info/exclude 文件,然后将须要忽略提交的文件写入此中。
须要留意的是,这种方式指定的忽略文件的根目次是项目根目次。
3、界说Git全局的 .gitignore 文件(个人利用方便,但是团队的话不实用,由于是在本身电脑设置的全局)
除了可以在项目中界说 .gitignore 文件外,还可以设置全局的 git .ignore 文件来管理全部Git项目的举动。这种方式在差异的项目开发者之间是不共享的,是属于项目之上Git应用级别的举动。
1) 创建忽略规则文件 xxxx.ignore(前缀名任意起,发起是 git.ignore).
这个文件的存放位置原则上在那里都可以,为了便于让~/.gitconfig 文件引用,发起也放在用
户家目次下
git.ignore 文件模版内容如下:
- # Compiled class file
- *.class
- # Log file
- *.log
- # BlueJ files
- *.ctxt
- # Mobile Tools for Java (J2ME)
- .mtj.tmp/
- # Package Files #
- *.jar
- *.war
- *.nar
- *.ear
- *.zip
- *.tar.gz
- *.rar
- # virtual machine crash logs, see
- http://www.java.com/en/download/help/error_hotspot.xml
- hs_err_pid*
- .classpath
- .project
- .settings
- target
- .idea
- *.iml
复制代码 2) 在.gitconfig 文件中引用忽略设置文件(此文件在 Windows 的家目次中)我的是在C:\Users\PC.gitconfig
- [user]
- email = xuxin@wondertek.com.cn
- name = xuxin666
- [credential "https://gitee.com"]
- provider = generic
- [core]
- excludesfile = C:/Users/PC/git.ignore
复制代码 留意:这里要利用“正斜线(/)”,不要利用“反斜线(\)”
怎样查抄本身写的ignore规则是否有效?
- git check-ignore -v {文件或目录路径}
复制代码
gitignore规则不收效
.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
办理方法就是先修改.gitignore文件,之后在实验以下内容先把本地缓存删除(改变成未track状态),然后再提交:
- git commit -m 'update .gitignore'
复制代码 同样的,已被.gitignore忽略的文件是无法加入版本库的。
办理方法:要纳入版本管理,先移除规则。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |