本文简单介绍vs和tortoise git的忽略方式,水平一般有问题欢迎指出。


前言

目前也就会几种

  1. 先从github的仓库create
  2. vs利用git拓展
  3. 小乌龟git

然后项目是cpp的,用的ide是vs,所以如果是别的项目或许关键点不一样
关于为什么要忽略掉一些文件,按照惯例一般上传都是纯净的,你自己编译产生的exe、log和一些隐藏文件是别人不需要的,而且这些还占内存


正文

1. vs的忽略方式

vs比较干脆吧,毕竟是图形化操作。

  1. 首先在顶部菜单栏选择视图,打开git更改
  2. 然后你改动过的文件会在项目出现,你可以直接右击

忽略此本地项就是只忽略这个文件
忽略此拓展名,比如头文件的尾缀名是.h,那么所有的.h就被忽略了。

不过对于隐藏文件好像不太好显示,明确的话直接在第三种方式里面修改

以我vs创建的项目为例,目录下都有个.vs的隐藏文件夹,这玩意体积大老大了,实际用处不大,然后除了手动添加了什么静态库之类的,再去掉debug和release目录,实际上的代码体积是很小的。

你要是上传几个g到仓库,先不说速度,等会给ban了。


2. 小乌龟git的忽略方式

小乌龟的忽略方式同样是右击直接干,当然你再安装小乌龟的时候要给他添加到环境变量的,不然右键菜单里面不一定会有。

这个同样对于隐藏的文件好像不能主动忽略,除非你提交到仓库的时候给他忽略了,或者还是第三种就写好。

虽然有的时候好像也会弹不出来。

可能提交的时候忽略会比较好使,但是我们知道的大类,是可以提前排除的最好,不然整个项目文件其实还是挺多的,检索一番也比较费时。


3. .gitignore文件

这玩意就是核心点了,毕竟你图形化的操作也是变相的往里面编写。
github也有相应的介绍戳此处
包括如何忽略文件或目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# ignore all .a files
*.a

# but do track lib.a, even though you're ignoring .a files above
!lib.a

# only ignore the TODO file in the current directory, not subdir/TODO
/TODO

# ignore all files in any directory named build
build/

# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt

# ignore all .pdf files in the doc/ directory and any of its subdirectories
doc/**/*.pdf

官方介绍的:
您可以放入.gitignore文件中的模式规则如下:

  • 空白行或以开头#的行将被忽略。
  • 标准 glob 模式有效,并将在整个工作树中递归应用。
  • 您可以使用正斜杠 / 开始模式以避免递归。
  • 您可以使用正斜杠 / 结束模式以指定目录。
  • 您可以通过以感叹号 ! 开头来否定模式。

Glob 模式就像 shell 使用的简化正则表达式。星号 ( *) 匹配零个或多个字符;[abc]匹配括号内的任何字符(在本例中为 a、b 或 c);问号 ( ?) 匹配单个字符;和括号括起由连字符 ( [0-9]) 分隔的字符,匹配它们之间的任何字符(在本例中为 0 到 9)。您还可以使用两个星号来匹配嵌套目录;a/**/z将匹配a/z, a/b/z, a/b/c/z, 等等。

咱目前应该用这些就够了:

  • 以斜杠/
    1. 若斜杠在前,表示只忽略当前目录下这个名字的文件和目录,子目录不在范围
    2. 若斜杠在后,表示只忽略这个目录,不忽略这个名字的文件
    3. !file/这种做法等同于file,即忽略这个文件,不忽略这个名字的目录
  • 以星号*通配多个字符,比如*.h
  • 以问号?通配单个字符,这个不常用啊
  • 以方括号[]包含单个字符的匹配列表
    1. 例如*.[hc],就是忽略掉所有的.h.c文件,只要匹配到其中一个字符就成立
  • .开头的也就是隐藏文件或者目录,基本包含在内,比如vs生成的项目里就有个.vs的隐藏文件夹,可以直接用这个忽略掉。

以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;
注意,gitignore偏向于解释型,匹配规则自上而下,前面已经匹配到了后面的就不会生效
添加忽略前上传的文件无法生效,只能clone下来删除后匹配忽略在上传
解释型语言好像都喜欢用#当注释


结语

作为码农,git肯定还是要会用的。