很多老程序员的常识性问题,往往是难倒新人的最后一根稻草。因为这类简单基础的问题,却往往连最起码的教程资料都查不到,因为老程序员懒得写也不敢写,怕被骂太水皮毛。 但是据我观察,最近粉丝群有人问到为什么自己的项目PUSH过滤文件失败,然后不少群友纷纷帮忙,结果这说法却五花八门,各种错误不确定的回答充斥出来,对,就是这样一个简单的过滤问题。
然后一些群友去百度相关的教程文章,却发现基本都是复制粘贴,而且说的模糊不清,连个最起码的例子都木有。这种感觉就像是...就像是一个教授给一个科学家写的论文一样,全是省略,暗示和反问。压根就不是给我们小学生看的.... 于是我准备背着被人喷水文的骂名,给大家具体写一篇这个git过滤问题的实测实例文章!
首先,我们去gitlab注册一个空项目,项目目录如下,可以看到什么都没有(除了自带README.md)
然后把它clone下到本地电脑上,打开这个文件夹可以看到依然什么都木有!
然后我们实验来了!注意看,我新建了俩个文件:a.txt , b.txt
预期是,把a.txt过滤掉,留着b.txt上传成功。
那我们就新建一个.gitignore文件,注意文件是隐藏的,因为前面有.
并且在这里面写上:
然后执行那一套老命令push: git add . git commit -m '.' git push 上传成功后,仓库内容如下:
可以看到,这个.gitignore 和b.txt 都成功上去了哦,只有a.txt不在,这说明过滤成功!
然后我们再测试,文件夹下的多层级文件过滤:c/c/c/c.txt
.gitignore文件中这么写:
push成功后,结果如下:
可以看到,不光c.txt没有上来,连它的各个层级目录也没上来。如果你的项目中,需要上传目录的话,那我建议你还是手动去服务器上新建这几个目录,一劳永逸。
然后继续测试,这个文件夹下有一大堆内容,全部过滤怎么写?
push成功结果如下:
如上图所示,abc三个txt文件和 三层的c目录 都没有上传,全都被过滤掉了!所以,用*可以全部过滤掉了。
继续测试,如果只想过滤掉c.txt,留着a.txt 和b.txt呢?
结果如下:
可以看到,三层c目录都上来了,并且a.txt 和b.txt也在,只有c.txt过滤掉了。
继续测试,如果我想全过滤掉,但是目录只写到一层可不可以?
结果如下:
可以看到,并没有成功,所以结论是 * 只能过滤掉文件,当文件夹内容都被过滤掉后,文件夹也会过滤掉。
那么问题来了,本来就是空文件夹,没有写过滤设置,还能上传么?
测试如下:
结果如下:
可以看到,并没有上传,所以文件夹果然是要有点内容才会上去的哦!
关于过滤,还有很多高级用法和复杂设置,欢迎追更哦~