如果你的项目中有些文件不需要纳入到 git 的版本控制中,可以在 git 仓库中添加 .gitignore 文件,并在里面填写在这个项目中需要忽略的文件
作用范围
.gitignore 文件的作用范围是当前 git 仓库,如果想在所有项目中都忽略某些文件,可以
使用 git config core.excludesFile 文件路径 指定使用哪个文件作为全局忽略的配置
优先级
优先级以当前 git 仓库中的 .gitignore 文件为主,.gitignore 文件中没定义的,再以全局配置为主
语法
#:井号开头的为注释*:星号匹配多个任意字符?: 问号匹配一个任意字符[]: 中括号匹配单个字符!: 概叹号表示否定,如果需呀排除大量文件,先可以排除所有文件,然后再把部分文件包含进来,如果要匹配以 ! 开头的文件,请在第一个 ! 前面加(反斜杠)/: 斜杠表示目录分隔符,/出现的位置会影响/的作用/出现在开头或中间,此时不管结尾是否有斜杠,都是从 .gitignore 文件所在路径为起始目录向下查找,例如 /target/classes/、/target/classes 、target/classes/、target/classes 他们虽然写法不同但是含义都一样,都是匹配 .gitignore 文件同级目录中 target/classes 目录/只出现在结尾,在 git 仓库中的任意路径下匹配,例如 classes/,只要当前 git 仓库中有该目录,不管在什么路径下,都能匹配上(跟 .gitignore 文件所在路径无关)- 不含斜杠,在 git 仓库中的任意路径下匹配,既匹配目录、也匹配文件(含斜杠的一定是匹配目录,不含既匹配目录、也匹配文件)例如 classes,只要当前 git 仓库中有该目录或该名称的文件,不管在什么路径下,都能匹配上
**: 连续的两个星号与/搭配时有特殊的含义,**出现的位置会影响**的作用**出现在开头并且结尾不带/:在 git 仓库中的任意路径下匹配,既匹配目录、也匹配文件。例如 **/foo/bar , 只要当前 git 仓库中任意位置存在 target/classes 目录或 target 目录下有名为 classes 的文件就能匹配上**出现在开头并且结尾带/:在 git 仓库中的任意路径下匹配,只匹配目录。例如 **/target/classes/ , 只要当前 git 仓库中任意位置存在 target/classes 目录**出现在中间并且结尾不带/: 从 .gitignore 文件所在路径为起始目录向下匹配文件或目录,中间的**表示可以跨0到多个层级。例如 target/**/classes 、/target/**/classes 都是匹配 .gitignore 文件同级目录中 target 目录下零到多层目录下的 classes 文件或目录, 比如 target/classes、target/a/classes 等**出现在中间并且结尾带/:作用于**出现在中间并且结尾不带/差不多,只是不匹配文件**出现在结尾,作用跟/出现在开头或中间一样。例如 /target/classes/、/target/classes 、target/classes/、target/classes、 /target/classes/** 、target/classes/** 他们虽然写法不同但是含义都一样,都是匹配 .gitignore 文件同级目录中 target/classes 目录
使用
强烈建议不要设置全局忽略文件,然后为每个 git 仓库创建 .gitignore 文件
.gitignore 文件没有必要手写,github 上都有整理好的各种编程语言、项目环境下的 .gitignore 模板,下载下来直接用,还有缺失的再手动加