gitignore如何编写

我们使用git托管项目时,并不是所有文件都要托管,这时我们需要gitignore文件来指定哪些不要托管。

1.gitignore创建方式

在git bash中输入

touch .gitignore

然后输入

vim .gitignore

进行编辑,不熟悉vim的也可以使用记事本等编辑软件。

2.gitignore示例

# 只包含 foo/bar 文件夹 的 gitignore
/*       
!/foo   
/foo/*   
!/foo/bar

3.gitignore编写规范(不怎么重要的规范就忽略了,这里列举我们常用的满足需求即可)

注:我们将gitignore文件的每行文字称之为模式(pattern),模式规定了怎样和文件进行匹配。

  • ‘#’ 号开头代表注释
  • ‘!’ 开头的模式代表此模式被无效化,该模式下的文件若之前被排除,将重新被git添加。
  • ‘/’ 符作为文件夹的分隔符
  • 如果模式中的头部或中间出现 ‘/’(尾部不满足),则此模式在gitignore文件路径同层开始起作用;
    如果没有‘/’ ,任何比 gitignore文件 的文件都会被影响。
  • 模式尾部出现’/’,则该模式只匹配文件夹;
    否则,文件夹和文件都会受影响。
    Note:综合上面两条,我们可知 doc/frotz/ 能匹配 doc/frotz 文件夹, 而不能匹配 a/doc/frotz文件夹;但是,frotz/ 可以同时匹配 frotz 文件夹 和 a/frotz 文件夹。
  • 单个星号 ‘*’ 通常用来替代所有可能的文本内容,比如
*.txt    匹配所有txt格式的文件
  • 两个星号‘**’ 通常用来指代所有可能的位置,比如
**/foo   匹配所有路径下的foo文件或文件夹
/**      匹配所有内容
abc/**   匹配所有abc文件下的所有内容
a/**/b   匹配a文件夹下所有位置的b文件夹或文件,“a/b", "a/x/b", "a/x/y/b”都会被匹配

模式规范很多遵循正则表达式规范,读者应该好好学习一下。

4.gitignore示例解析

# 只包含 foo/bar 文件夹 的 gitignore
/*          1.先排除掉所有文件夹
!/foo       2.加入foo文件夹
/foo/*      3.排除掉foo文件夹内所有内容
!/foo/bar   4.加入bar4文件夹

编写方法总结:由外到里,逐步梳理要加入文件,排除文件,逐层深入。