`.gitignore` 和 `.dockerignore`忽略范围
·
下面这个表格以 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 结尾的所有文件和目录
更多推荐
所有评论(0)