GitHub - github/gitignore: A collection of useful .gitignore templates

在执行完 git init 后并不会自动创建 .gitignore 文件,我们可以手动创建,跟自己的项目文件在一个目录中。

例如有几个隐私文件不需要被跟踪:

可以创建 .gitignore 并直接写对应的文件名来取消跟踪,如 apilink,效果如下:

gitignore 还支持 glob 模式匹配

  • 每一个非空或者以 # 开头的行都会被当做匹配行处理
  • 每个匹配行的内容都会被递归地应用在所有文件夹中,除非在开头加上 / 则只会在当前目录即项目根目录使用
  • 若要忽略文件夹则需要在文件夹名结尾加上 /
  • 要忽略指定模式以外的文件或目录,可以在模式前加上叹号(!)取反

例如:

# 忽略所有的 .a 文件
*.a

# 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a

# 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
/TODO

# 忽略任何目录下名为 build 的文件夹
build/

# 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt

# 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
doc/**/*.pdf

在最简单的情况下,一个仓库可能只根目录下有一个 .gitignore 文件,它递归地应用到整个仓库中。 然而,子目录下也可以有额外的 .gitignore 文件。子目录中的 .gitignore 文件中的规则只作用于它所在的目录中。 (Linux 内核的源码库拥有 206 个 .gitignore 文件 )更多详情见 man gitignore