目录
.gitignore作用
.gitignore使用
1.语法规范(熟悉正则很容易理解)
2.示例
文件无法变黄或忽略文件无效还是被提交问题
解决方案
.gitignore作用
.gitignore
文件在 Git 版本控制系统中扮演着非常重要的角色。在任何 Git 仓库中,.gitignore
文件都可以用来告诉 Git 忽略一些文件或文件夹,怎么把不需要的代码不进行上传,只上传自己需要的代码文件。
例如下图黄色文件可能正常情况下你都不想上传的git仓库,因为大多都是缓存文件,.gitignore
可以做到这点
.gitignore使用
1.语法规范(熟悉正则很容易理解)
空行或是以#开头的行即注释行将被忽略;
以斜杠 “/” 结尾表示目录;
以星号 “*” 通配多个字符;
以问号 “?” 通配单个字符
以方括号 “[]” 包含单个字符的匹配列表;
以叹号 “!” 表示不忽略(跟踪)匹配到的文件或目录;
可以在前面添加斜杠 “/” 来避免递归,下面的例子中可以很明白的看出来与下一条的区别。
2.示例
# 忽略 .a 文件
*.a# 否定模式:在模式前加上 ! 来否定忽略,例如 !lib.a 会跟踪名为 lib.a 的文件,即使前面有规则忽略所有 .a 文件。
!lib.a# 仅在当前目录下忽略 TODO 文件, 但不包括子目录下的 subdir/TODO
/TODO# 忽略 build/ 文件夹下的所有文件
build/# 忽略 doc/notes.txt, 不包括 doc/server/arch.txt
doc/*.txt# 忽略所有的 .pdf 文件 在 doc/ directory 下的
doc/**/*.pdf
切记:.gitignore生效路径是相对路径,
像上述的build/ ,指的是.gitignore同级目录下的
build文件夹。
下面写上我定义的内容(这是SpringBoot
项目一般定义的内容,剩下的你可以自己加):
## Git忽略文件(YangLinwei 2021.08.06)
.DS_Store
.idea
*.iml
.idea
logs
out
gen
target
忽略提交的文件夹名称变成黄色了,就代表成功忽略该文件夹了,最后,我们提交的时候,IDEA
就不会去读取gitnore
忽略的文件了!
文件无法变黄或忽略文件无效还是被提交问题
如果想要忽略提交的文件夹名称变成黄色了,就代表成功忽略该文件夹了!
但我发现,我新添加了个jss文件,他没有变黄
而且commit时可以被检查到,这是因为.gitignore只能忽略那些原来没有被track(被跟踪管控)的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
简单点说上面的djsak.txt文件和jss文件夹都是我新增后,在.gitignore文件中添加的,在他添加时,我其实已经把他add命令添加到我的git缓存中进行跟踪了,此时在添加gitignore进行忽略是无效的。
在修改gitignore文件后,IntelliJ IDEA不会自动将之前已经被git跟踪的文件标记为未被跟踪的状态。
那什么样文件会被跟踪管控呢?
git管控的代码:
红色,不受到git管控,一般git init初始化某文件夹的时候,该文件夹下文件为红色,不被管控
黄色,git管控忽略掉这些文件,不被管控
绿色,受到git管控,该颜色由git add红色的文件后形成,管控
白色, git commit 绿色的文件后形成。commit后的文件存在本地的git仓库,可根据提交日志还原到原来版本,管控
解决方案
因此,即使修改了gitignore文件,但对应的代码也不会变成黄色,仍然保持为绿色或者白色。
如果要使被gitignore忽略的文件生效,需要手动将如上述jss文件夹复制到外边,删除idea 的jss文件夹,然后在复制进来,即可。或者以后先写gitignore文件在写要忽略的文件即可。
如果不行就在删除后jss文件夹,并提交一次commit,这样在之后的代码变化中就不会再被git跟踪了,然后再把jss文件夹复制代码中在提交就不会有问题了。
------------------------------------------与正文内容无关------------------------------------
如果觉的文章写对各位读者老爷们有帮助的话,麻烦点赞加关注呗!小弟在这拜谢了!
如果您觉得我的文章在某些地方写的不尽人意或者写的不对,从而让你对你人生观产生颠覆(概不负责),需要斧正,麻烦在评论区不吝赐教,作者看到后会根据您的提示查阅文章进行修改,还这世间一个公理一片蓝天