背景,一个kernel,里面有大量硬件厂商的库,拿过来后直接

$git init

$find . -name .gitignore -type f -exec rm -rf {} \; #前面说过,有大量库,默认的规则是会过滤掉,这样的代码你push上去谁也编不过去

$git add .

$git commit -a -m "init commit"

没问题,拿到的是干净的内核,没有什么该忽略的,至少还不清楚,都包进去是应该的。

然后问题来了,$make -j4 编译完成

$git status

...

然后就是超长的Untracked files列表了,各种.o啊之类的中间文件

简单的法子就是把这个表直接复制到你的.gitignore文件中

但是面对这个超长的.gitignore也是实在不专业

然后想要按目录去编写.gitignoe,但是担心会把已经跟踪的问题给过滤掉,所以做这个实验

两个文件 1.txt 2.txt add后commit

然后编写.gitignore 把2.txt过滤

实验1:在工作目录中对2.txt操作,会被git捕获,与正常跟踪的文件相同

验证被加在过滤列表的已跟踪文件会被正常push

实验2:过滤2.txt,然后git push,然后换个地方git clone一个新的工作目录,ls下2.txt正常出现

(还是钻研不深,感觉还是理论的不严谨,这个地方如果准确的知道.gitignore的工作方式和作用范围就不用这么费劲了,但是计算机么,还是事实为准)

感觉.gitignore的作用仅限于git status这种去按工作目录干活的命令,其他的git命令应该是基于.git文件夹中的记录,所以才会有这种效果。

结论:需要的文件都跟踪后就可以大范围的粗旷的使用.gitignore了