ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

小乌龟操作git之忽略文件

2022-06-12 13:31:27  阅读:165  来源: 互联网

标签:文件 git 忽略 f001 乌龟 txt 目录


git的忽略文件

目录

1、为什么需要忽略文件

在我们的项目中,总有一些文件或者目录不想或者不能被纳入版本控制中。
比如:日志文件、开发工具的配置文件、java中的.class文件等。
这些文件都是针对开发者的,每一个开发者的日志文件、开发工具的配置文件都不一致,
如果纳入版本控制后,会对团队中其他成员的项目造成影响:每次进行代码合并的时候都会产生冲突。

因此,我们应该养成良好的习惯,每个项目中都应该有一个.gitignore文件,来忽略不想被纳入版本控制的文件。

git也考虑到这个功能,所以使用.ignore文件提交给开发者来进行选择,去忽略哪些开发者指定忽略的文件

2、忽略文件的生效时机

.gitignore文件的生效时机是:要忽略的文件还没有被纳入版本控制中。
即:如果一个文件已经做过一次提交了,那么,即便是在.gitignore文件中添加此文件进行忽略,也不会起作用!

3、忽略文件的语法

在使用springboot项目初始化构建的时候,会主动生成一个.ignore文件。

具体如下所示:

HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/

### VS Code ###
.vscode/

那么来看一下对应的语法。

1)每一行表示一个匹配规则,空行会被忽略;
2)以 # 开头的行表示注释,可以使用反斜杠进行转义;
3)空格不匹配任何的文件,可以作为分隔符,可以使用反斜杠进行转义;
4)* 表示匹配零个或多个任意字符;
5)** 表示匹配任意中间目录;如 :a/**/z 可以匹配 a/z, a/b/z 或者 a/b/c/z;
6)? 表示匹配任意一个字符;
7)[abc] 表示匹配任意一个括号中的字符;
8)[a-z] 表示匹配任意一个括号中的两个字符的范围之内的字符;
9)以斜杠/开始表示目录且表示根目录;
10)以斜杠/结束的模式表示只匹配文件夹以及该文件路径下的内容,不匹配该文件;
11)如果一个模式不包含斜杠,则它匹配相对于当前.gitignore文件路径的内容,如果该模式不在.gitignore中,则相对于项目根目录
12)! 表示对.gitignore中的模式进行取反;即:取消对应的忽略,继续追踪对应的文件。
13)git对于.ignore配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;
# 忽略 .a 文件
*.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

3.1、忽略指定文件

a.txt: 忽略所有目录下面的 a.txt 文件
/a.txt: 仅忽略根目录下面的 a.txt 文件(防止递归忽略所有的 a.txt文件)
/f001/aa.class : 具体忽略 某个目录下面的 某个文件。忽略根目录下的f001文件夹下的aa.class
*.txt: 忽略所有目录下面的以 .txt 结尾的文件【递归】
**/*.class: 忽略 任意目录下面的 以 .class 结尾的文件
f1/**.class:忽略与.gitignore文件同目录下的 f1目录下的 所有以.class结尾的文件
f001/**/*.class:忽略 与 .gitignnore 文件同目录的 f001 目录下面任意级目录下的 以.class结尾的文件

3.2、忽略指定文件夹

/f001_1/: 忽略根目录下面的f001_1目录
f001_1/ : 忽略 所有的 f001_1目录,/f001_1/,/a/b/f001_1/ 等等
f001_1/* : 忽略 与.gitignore 文件同目录下的 f001_1的目录的所有的内容

总结一下:

如果不以/开头,那么标识的是忽略所有。不管是文件还是文件夹:

aa/:标识忽略任意文件夹下的aa目录;

aa/*:标识忽略根目录下的aa文件夹下的aa目录;

aa.txt:表示忽略任意文件夹下的aa.txt文件;

如果以/开头,那么表示的是相对于根路径而言;

4、四种情况讨论

这里分为四种情况:

1、想忽略的文件未提交到暂存区;

这种是最简单的方式

这个时候新增忽略文件。那么忽略文件中配置的指定文件或者是目录将会被忽略。

2、想忽略的文件提交到暂存区未提交到本地仓库;

这个时候借助git命令行方式

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

3、想忽略的文件提交到本地仓库;

这个时候借助git命令行方式,首先清除掉.ignored文件的缓存,然后重新提交上去.

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

这种清理方式还是比较安全的,因为会有日志记录下来,想要回滚的时候也是可以来进行回滚到的.

4、想忽略的文件已经在远程仓库;

可以手动清空,或者是使用上面的命令。

git:修改.gitignore后生效https://blog.csdn.net/flyingnet/article/details/122708344

标签:文件,git,忽略,f001,乌龟,txt,目录
来源: https://www.cnblogs.com/likeguang/p/16367847.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有