gitignore 规则

作者:zheng_Great 2020-04-17 3721次
gitignore 规则

一种被 Git 忽略跟踪文件(或目录)的规则,这种规则对于已被跟踪的文件是无效的。
当然它也提供配置自动加入跟踪的文件(或目录)的规则,但这种用法比较少。

规则

基本规则

  1. 空行或者以 # 开头的行都会被 Git 忽略。一般空行用于可读性的分隔, # 一般作注释用

  2. 以斜杠 / 结尾表示忽略目录

  3. 以 / 开头表示根目录下的文件或目录

  4. 以叹号 ! 表示不忽略(跟踪)匹配到的文件或目录

示例如下:

# 本行为注释
.idea/          # 忽略仓库中所有.idea 目录
/.idea/         # 忽略仓库中根目录下的.idea 目录
/.settings      # 忽略仓库中根目录下的 .settings 文件或目录
~'$'*.docx      # office 打开时生成的临时文件
!etc/eclipse/.checkstyle    # 不忽略 .checkstyle 文件或目录

glob 模式规则

指 shell 使用的简化版正则表达式规则,其如下:

  1. 以星号 * 通配任意个字符(0-n)

  2. 以问号 ? 通配单个字符(1)

  3. 以方括号 [] 包含单个字符的匹配列表

示例如下:

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 文件或目录

注意

  1. 以上规则仅适用于未被缓存或加入版本控制的文件

  2. gitignore 支持 glob 模式

  3. 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

实际上通过此命令也可以设置忽略规则文件。

总结

以下为个人对各种忽略规则的一般准则吧,各位可以参考参看:

  1. 命令行形式的,通常不使用,毕竟有以下更简单方便的方式实现。

  2. .gitignore: 当前存储库中有开发人员都要忽略的跟踪文件

  3. $GIT_DIR/info/exclude:单个存储库个人忽略的配置文件,如个人为了更好 debug,开启日志配置等

  4. ~/.gitconfig 中 core.excludesFile 指定的文件:任意情况下用户希望忽略的文件,如IDE配置文件目录(当然
    项目中也一般会添加此忽略规则)。

插件

因为个人多数使用 Intellij IDEA,所以只了解 IDEA 下的插件,个人推荐使用 .ignore

因为该插件不仅支持 gitignore ,还支持其他类型的 ignore 忽略规则语法高亮,如图



原文链接:

https://segmentfault.com/a/1190000017138049https://segmentfault.com/a/1190000017138049