发布于2026-07-05 阅读(0)
扫一扫,手机访问
在使用 Git 的过程中,很多人都会遇到这样一个问题:

.gitignore 写好了,但文件还是被提交了?
其实原因很简单——
.gitignore 只能忽略“未被 Git 跟踪的文件”git add 或提交过的文件,不会自动生效下面从原理到正确做法,再到常见场景和排坑技巧,一次讲清。
Git 中文件有两种状态:
.gitignore 生效.gitignore 不生效一旦执行过:
git add file git commit
这个文件就进入了 Git 的索引(index),之后再写 .gitignore,Git 会直接忽略你的忽略规则。
目标很明确:
例如忽略 config.yaml:
config.yaml
git rm --cached config.yaml
注意:--cached 这个参数非常关键——它不会删除你磁盘上的文件。
git commit -m "ignore config.yaml"
至此完成 ✅
常见场景:logs/、build/、dist/、node_modules/ 等。
.gitignore 中写:
logs/ build/
移除索引:
git rm -r --cached logs build git commit -m "ignore logs and build directories"
如果已经提交了 .env、本地配置、构建产物……可以用重建索引法(慎用但非常有效):
git rm -r --cached . git add . git commit -m "reapply .gitignore rules"
这个命令做了什么?清空 Git 索引 → 按新的 .gitignore 规则重新添加 → 本地文件不会丢。
有些文件不想提交,但也不想改 .gitignore(例如 IDE 配置)。这时可以用本地忽略文件:
.git/info/exclude
写法与 .gitignore 完全一致:
.idea/ .vscode/
特点:只对你本地生效,不会提交到仓库。
怀疑规则没生效时,用这个命令:
git check-ignore -v config.yaml
输出会提示:命中了哪条规则、来自哪个 ignore 文件、路径是否正确。这是高级 Git 使用者必备命令。
| 现象 | 原因 |
|---|---|
| .gitignore 不生效 | 文件已被跟踪 |
| 删了 .gitignore 仍被忽略 | .git/info/exclude 或全局 ignore |
| CI 还能看到文件 | 已提交到历史 |
| 新同事 clone 后还有文件 | 历史里已存在 |
.gitignore 无法删除历史记录。如果误提交了 token、key、密码、内部配置,需要使用 git filter-repo(推荐)或 BFG Repo Cleaner。并且——立刻作废旧密钥,重新生成凭证。这已经是安全问题,不只是 Git 问题了。
.gitignore 管未来,git rm --cached 处理过去。只要记住这一点,90% 的 Git 忽略问题都能解决。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8