1. 自己总结:
    1. *.a--匹配任意路径下的.a文件
    2. a/--匹配任意路径下的a文件夹
    3. a/*--匹配根目录下的文件夹a下的任意文件(等同于 /a/* 或 /a/)  ----一般情况下不会有这种写法
    4. /a--匹配根目录下的文件a
    5. /a/--匹配根目录下的文件夹a(等同于 /a/*)
    6. *--匹配任意字符(零个或多个字符)
    7. */--匹配任意1个目录
      1. */--匹配根目录下的任意1个目录(等同于/*/)
      2. a/*/--匹配a目录下的任意1个目录(等同于 /a/*/)
      3. a/b/*/--匹配b目录下的任意1个目录(等同于 /a/b/*/)
    8. **/--匹配任意目录(0个、1个或多个目录;**后面肯定跟着斜杠/,否则等同于独*)
    9. 如果文件夹a为空目录,则不允许加入版本库
      1. 就算a曾经加入过版本库,但清空a下的所有文件之后,a也会被移出版本库
        1. 此时,加入新文件b中,git st时,只会提示a未跟踪,而不会提示b
      2. 如果要把一个空目录a加入版本库,可以在a下新建一个文件.gitkeep,然后再进行提交
  2. 问题
    1. */App_Data/与**/App_Data/,效果不一样?
      1. 自答:
        1. */--匹配任意1个目录
          1. */--匹配根目录下的任意1个目录
          2. a/*/--匹配a目录下的任意1个目录(注意等同于 /a/*/)
          3. a/b/*/--匹配b目录下的任意1个目录(注意等同于 /a/b/*/)
        2. **/--匹配任意目录(0个、1个或多个)
      2. */App_Data/--匹配根目录下的任意子目录下的App_Data
        1. 即:只匹配/a/App_Data/,不匹配/App_Data/,也不匹配/a/b/App_Data/
      3. **/App_Data/--匹配根目录的子孙目录App_Data
        1. 即:匹配/App_Data/、匹配/a/App_Data/、匹配/a/b/App_Data/
05-07 15:25