下面这个表格以 temp 为例,总结了 .gitignore.dockerignore 文件中常用符号的忽略范围。

符号/模式 忽略范围说明(以 temp 为例) 示例解释
temp 忽略任意层级下名为 temp 的文件或目录。 会忽略 ./temp, /src/temp, /src/utils/temp 等。
/temp 仅忽略根目录下名为 temp 的文件或目录。 忽略 ./temp,但不会忽略 src/temp
temp/ 忽略任意层级下名为 temp目录及其内部所有内容。 会忽略 ./temp/, /src/temp/ 等目录。文件 temp.txt 不会被忽略。
*/temp 忽略任意一级子目录下名为 temp 的文件或目录。 会忽略 src/temp, utils/temp,但不会忽略 temp (根目录) 或 src/app/temp (更深目录)。
**/temp 忽略任意层级下名为 temp 的文件或目录。效果与单独的 temp 相同。 会忽略 ./temp, /src/temp, /src/utils/temp 等。
temp* 忽略任意层级下以 temp 开头的所有文件和目录。 会忽略 temp, temp.txt, temporary_file, templates 等。
*temp 忽略任意层级下以 temp 结尾的所有文件和目录。 会忽略 temp, mytemp, lasttemp 等。
temp? 忽略根目录下名为 temp 加一个任意字符的文件或目录。 会忽略 tempa, tempb, temp1 等,但不会忽略 temp 本身或 tempab
!temp 例外规则,表示不忽略名为 temp 的文件或目录,即使它被之前的规则匹配。 通常用在排除规则之后,用于保留特定文件。

💡 使用要点

  • 规则匹配顺序很重要.gitignore.dockerignore 文件的规则是从上到下逐条匹配的。后面规则的优先级高于前面规则。因此,例外规则(!)通常需要放在排除规则之后
  • 对已跟踪文件无效:如果某个文件已经被 Git 跟踪(即之前已经提交过),那么再将其添加到 .gitignore.dockerignore 文件中是不会自动生效的。需要先使用 git rm -r --cached <file_name> 命令将其从 Git 的索引中移除(但保留在本地磁盘上),然后再提交更改。
  • 语法高度相似但有细微差别.gitignore.dockerignore 的语法几乎完全相同。一个常见的细微差别是,在某些情况下,对于 .dockerignore,如果你想忽略一个目录下的所有内容,可能需要明确使用 temp/* 来匹配 temp 目录下的所有文件。

自己总结下 /temp 仅忽略根目录下名为 temp 的文件或目录。
temp 忽略任意层级下名为 temp 的文件或目录
*temp 忽略任意层级下以 temp 结尾的所有文件和目录

更多推荐