Git - 07. gitignore

1. 概述

  1. 开发的过程中, 无法保证项目文件夹下的所有东西, 都是想传到版本库的
    1. 比如 maven 项目的 target 目录
    2. 配置好之后, 使用 git add .命令, 这些文件\目录也不会被 stage

2. 文件位置

  1. 位置

    1. 工作目录
  2. 文件名

    .gitignore
    
  3. 注意

    1. 建议在创建成功之后, 把 .gitignore 文件也添加到 git 仓库中
    2. 不提交虽然可以生效, 但是每次 git status 时, 都会提示提 有未追踪的变更...
    3. 而且提交了也没有坏处不是吗?

3. 思路

  1. 编写文件
    1. 在 .gitignore 文件里指定规则
  2. 校验文件
    1. 执行 git add .
    2. git 对 untrack 和 changed 文件做匹配
      1. 如果符合 .gitignore 里的规则, 则不会做 stage 操作

4. 语法

1. 注释

  1. 概述

    1. 注释不论在什么语言, 都是很重要的
  2. 语法

    # 井号开头的行, 就是注释
    # 如果真有文件是以 # 开头, 可以在前面加 \
    

2. 普通文件

  1. 概述

    1. 最基本的规则
  2. 配置

    1. 概述

      1. 直接输入文件名
    2. 约定

      1. 支持通配符
      2. 以 workspace 为 pwd
        1. / 开头的路径, 也会从 workspace 开始查找
    3. 例子

      # 1. 单个文件
      Desktop.ini
      # 2. 目录下的某个文件
      build/file/file
      # 3. 某一类文件
      *.map
      # 4. 某几类文件
      *.py[co]
      # 5. 取反
      !Desktop.ini
      
    4. 其他

      1. 取反的配置, 建议尽量不要冲突

3. 目录

  1. 概述

    1. 单个文件的配置, 效率太低
  2. 配置

    1. 概述

      1. 目录名匹配
    2. 约定

      1. /
        1. 如果过滤项不以 / 结尾, 则会被视为 文件
        2. 如果要过滤 目录, 建议以 / 结尾
    3. 配置

      # 1. 过滤目录
      target/
      

4. 通配符

  1. 概述

    1. 单独讲下 通配符
  2. 通配符

    1. *
      1. 匹配除了 / 之外的任意个字符
    2. ?
      1. 匹配除了 / 之外的一个字符
    3. []
      1. 匹配 [] 中的一个字符
    4. **
      1. **/file

        1. 匹配项目里每个角落的 file
      2. dir/**

        1. 匹配目录下的所有项目
      3. a/**/b

        1. 匹配 a 下的 所有 b
          1. a/b
          2. a/x/b
          3. a/x/y/b

4. 检查

  1. 概述

    1. 检查 语法 与 忽略文件
  2. 命令

    # 这个命令, 我目前没有成功过...
    > git check-ignore -v  <fileToCheck>
    

ps

  1. ref
    1. 官方说明
    2. 廖雪峰
    3. github 仓库
    4. .gitignore忽略规则、语法、检查文件详解
posted @ 2019-06-28 18:01  轩辕拾銉  阅读(181)  评论(0编辑  收藏  举报