gitignore 规则
gitignore
规则一种被
Git
忽略跟踪文件(或目录)的规则,这种规则对于已被跟踪的文件是无效的。
当然它也提供配置自动加入跟踪的文件(或目录)的规则,但这种用法比较少。
规则
基本规则
空行或者以
#
开头的行都会被 Git 忽略。一般空行用于可读性的分隔,#
一般作注释用以斜杠
/
结尾表示忽略目录以
/
开头表示根目录下的文件或目录以叹号
!
表示不忽略(跟踪)匹配到的文件或目录
示例如下:
# 本行为注释 .idea/ # 忽略仓库中所有.idea 目录 /.idea/ # 忽略仓库中根目录下的.idea 目录 /.settings # 忽略仓库中根目录下的 .settings 文件或目录 ~'$'*.docx # office 打开时生成的临时文件 !etc/eclipse/.checkstyle # 不忽略 .checkstyle 文件或目录
glob 模式规则
指 shell 使用的简化版正则表达式规则,其如下:
以星号
*
通配任意个字符(0-n)以问号
?
通配单个字符(1)以方括号
[]
包含单个字符的匹配列表
示例如下:
debug?.logt # 忽略 debug?.log 文件或目录,其中 ? 为任意一个字符 debug[0-9].log # 忽略 debug0.log、debug2.log 等,但不忽略 debuga.log 文件 debug[01].log # 仅忽略 debug0.log、debug1.log debug[!01].log # 不忽略 debug0.log、debug1.log doc/*.txt # 忽略 doc 目录下一级的所有以 .txt 结尾的文件或目录 doc/**/*.pdf # 忽略 doc 目录下所有的 .pdf 文件或目录
注意
以上规则仅适用于未被缓存或加入版本控制的文件
gitignore
支持 glob 模式gitignore
是从上到下一行一行匹配,后面的会覆盖前面的
用法
git 中提供 ignore 支持的方式据我了解共有三种,按照效果来分可分为 全局忽略_、_仓库忽略(远程共用) 及 _仓库忽略(本地使用)_。
全局忽略
本地所有仓库中共同使用的忽略规则。
可以通过命令行或直接修改文件的方式进行修改:
命令行:直接修改
core.excludesFile
值即可修改配置文件:修改
~/.gitconfig
文件,在[core]
区域添加 excludesfile 属性,如下:[core]excludesFile = ~/.gitignore
注:
core.excludesFile
的默认值为~/.config/git/ignore
。
仓库忽略-远程
当前仓库使用,在当前仓库任意目录下创建 .gitignore
文件即可,Git 会通过它提供的规则忽略文件。
注:
远程共用的效果需要将
.gitignore
文件加入 Git 的版本管理.gitignore
文件规则存在冲突时,当前目录中的优先于父级目录中的
仓库忽略-本地
当前仓库使用。
修改 $GIT_DIR/info/exclude
文件,该文件规则和 .gitignore
文件一致。
注:
$GIT_DIR
为当前仓库中的.git/
目录
命令行式忽略
通过命令行提供忽略规则,根据参数不同,可达到 远程/本地 的效果。
各位如果观察过 $GIT_DIR/info/exclude
文件,可以发现该文件第一行有这么一个命令
git ls-files --others --exclude-from=.git/info/exclude
实际上通过此命令也可以设置忽略规则文件。
总结
以下为个人对各种忽略规则的一般准则吧,各位可以参考参看:
命令行形式的,通常不使用,毕竟有以下更简单方便的方式实现。
.gitignore
: 当前存储库中有开发人员都要忽略的跟踪文件$GIT_DIR/info/exclude
:单个存储库个人忽略的配置文件,如个人为了更好 debug,开启日志配置等~/.gitconfig
中core.excludesFile
指定的文件:任意情况下用户希望忽略的文件,如IDE配置文件目录(当然
项目中也一般会添加此忽略规则)。
插件
因为个人多数使用 Intellij IDEA,所以只了解 IDEA 下的插件,个人推荐使用 .ignore
。
因为该插件不仅支持 gitignore ,还支持其他类型的 ignore 忽略规则语法高亮,如图
原文链接:
https://segmentfault.com/a/1190000017138049https://segmentfault.com/a/1190000017138049