关于git忽略文件
本文简单介绍vs和tortoise git的忽略方式,水平一般有问题欢迎指出。
前言
目前也就会几种
- 先从github的仓库create
- vs利用git拓展
- 小乌龟git
然后项目是cpp的,用的ide是vs,所以如果是别的项目或许关键点不一样
关于为什么要忽略掉一些文件,按照惯例一般上传都是纯净的,你自己编译产生的exe、log和一些隐藏文件是别人不需要的,而且这些还占内存
正文
1. vs的忽略方式
vs比较干脆吧,毕竟是图形化操作。
- 首先在顶部菜单栏选择视图,打开git更改
- 然后你改动过的文件会在项目出现,你可以直接右击
忽略此本地项就是只忽略这个文件
忽略此拓展名,比如头文件的尾缀名是.h,那么所有的.h就被忽略了。
不过对于隐藏文件好像不太好显示,明确的话直接在第三种方式里面修改
以我vs创建的项目为例,目录下都有个.vs的隐藏文件夹,这玩意体积大老大了,实际用处不大,然后除了手动添加了什么静态库之类的,再去掉debug和release目录,实际上的代码体积是很小的。
你要是上传几个g到仓库,先不说速度,等会给ban了。
2. 小乌龟git的忽略方式
小乌龟的忽略方式同样是右击直接干,当然你再安装小乌龟的时候要给他添加到环境变量的,不然右键菜单里面不一定会有。
这个同样对于隐藏的文件好像不能主动忽略,除非你提交到仓库的时候给他忽略了,或者还是第三种就写好。
虽然有的时候好像也会弹不出来。
可能提交的时候忽略会比较好使,但是我们知道的大类,是可以提前排除的最好,不然整个项目文件其实还是挺多的,检索一番也比较费时。
3. .gitignore文件
这玩意就是核心点了,毕竟你图形化的操作也是变相的往里面编写。
github也有相应的介绍戳此处
包括如何忽略文件或目录
1 | # ignore all .a files |
官方介绍的:
您可以放入.gitignore
文件中的模式规则如下:
- 空白行或以开头
#
的行将被忽略。 - 标准 glob 模式有效,并将在整个工作树中递归应用。
- 您可以使用正斜杠
/
开始模式以避免递归。 - 您可以使用正斜杠
/
结束模式以指定目录。 - 您可以通过以感叹号
!
开头来否定模式。
Glob 模式就像 shell 使用的简化正则表达式。星号 ( *) 匹配零个或多个字符;[abc]匹配括号内的任何字符(在本例中为 a、b 或 c);问号 ( ?) 匹配单个字符;和括号括起由连字符 ( [0-9]) 分隔的字符,匹配它们之间的任何字符(在本例中为 0 到 9)。您还可以使用两个星号来匹配嵌套目录;a/**/z将匹配a/z, a/b/z, a/b/c/z, 等等。
咱目前应该用这些就够了:
- 以斜杠
/
- 若斜杠在前,表示只忽略当前目录下这个名字的文件和目录,子目录不在范围
- 若斜杠在后,表示只忽略这个目录,不忽略这个名字的文件
!file/
这种做法等同于file
,即忽略这个文件,不忽略这个名字的目录
- 以星号
*
通配多个字符,比如*.h
- 以问号
?
通配单个字符,这个不常用啊 - 以方括号
[]
包含单个字符的匹配列表- 例如
*.[hc]
,就是忽略掉所有的.h
和.c
文件,只要匹配到其中一个字符就成立
- 例如
- 以
.
开头的也就是隐藏文件或者目录,基本包含在内,比如vs生成的项目里就有个.vs的隐藏文件夹,可以直接用这个忽略掉。
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;
注意,gitignore偏向于解释型,匹配规则自上而下,前面已经匹配到了后面的就不会生效
添加忽略前上传的文件无法生效,只能clone下来删除后匹配忽略在上传
解释型语言好像都喜欢用#当注释
结语
作为码农,git肯定还是要会用的。