如何创建 .gitignore 文件
在仓库根目录创建名为 .gitignore 的文本文件,每行一条忽略规则(支持 通配、目录/ 结尾、! 取反、# 注释),保存即生效。最快的方式是用 gitignore.io 或 GitHub 模板生成对应技术栈的规则。
在仓库根目录新建一个名为 .gitignore 的纯文本文件,每行写一条忽略规则,保存后立即生效(对未跟踪文件)。Windows 资源管理器不让建点开头的文件名时,用命令行 touch .gitignore 或编辑器另存为。
创建
touch .gitignore # Linux/macOS
if not exist .gitignore type nul > .gitignore # Windows cmd
语法速查
# 注释用井号
# 所有 .log 文件
*.log
# build 目录(任意层级)
build/
# 只匹配根目录的 target
/target
# doc 下直接子级 txt
doc/*.txt
# doc 下所有层级的 pdf
doc/**/*.pdf
# 取反:这个不忽略
!important.log
# ? 匹配单个字符
temp?
更快的方式:用模板
- GitHub 建仓库时选技术栈自动生成;
- gitignore.io(先下载为独立文件,检查后再合并进现有 .gitignore,不要直接重定向覆盖);
- IDE 插件(VS Code 的 gitignore 插件右键生成)。
验证规则
git check-ignore -v some-file.log # 显示匹配规则;! 否定规则表示重新包含,不代表被忽略
git status --ignored # 总览被忽略的文件
check-ignore 默认不报告已跟踪文件;诊断规则本身时可用 --no-index,但不会改变跟踪状态。
常见问题(FAQ)
Q:加了规则但文件还出现在 git status 里?
该文件已被跟踪。git rm --cached <文件> 移出索引后规则才生效。
Q:.gitignore 本身要提交吗?
要。它属于项目的共享约定,进版本库让全队生效。个人专属的忽略规则放 .git/info/exclude。
Q:规则优先级怎么算?
同一文件后面的规则覆盖前面的;子目录的 .gitignore 覆盖父目录的;! 取反是最后的例外手段(但父目录被整体排除时取反无效)。