踩坑日记:为什么 .gitignore 不起作用了

最近在为 Mathcheap 项目开发一个 Gemini API Key 代理工具,在做项目管理的时候遇到一个问题,之前误将本地的测试数据库提交到了代码中,发现这个问题后,希望通过在.gitignore 中添加了一行

bash 复制代码
# sqlite database
data.sqlite

希望可以让Git忽略掉当前代码中的 data.sqlite 数据库,可是 data.sqlte 依然显示在 "Chnages" 中

这是怎么回事?

解释原因

.gitignore 只会忽略"未被跟踪"的文件;一旦文件已经被 Git 跟踪并提交过,后续改动仍会显示在"Changes"。因为 data.sqlite 文件之前已经被我提交过了,所以仓库中 data.sqlite 已经被跟踪,所以即使在 .gitignore 加了规则,Git 仍会显示它的变更。

通常的做法是通过 git reset --soft HEAD~ 回溯到上次提交的状态,删除被不想被提交的文件, 在更新 .gitignore 就可以了。

但是如果已经提交很久了,回溯也很麻烦,就用下面的命令停止跟踪但保留本地文件:

bash 复制代码
git rm --cached data.sqlite
git commit -m "Stop tracking data.sqlite"

之后 .gitignoredata.sqlite 规则就会生效,新变更不会再出现在"Changes"。

检查忽略规则是否生效以及来自哪一条规则:

bash 复制代码
git check-ignore -v data.sqlite
# .gitignore:44:*.sqlite  data.sqlite

.gitignore 终于可以正常工作了

相关推荐
七号练习生.c2 小时前
Git常用命令速查
大数据·git
奋进的电子工程师7 小时前
如何实现开源组件的安全与合规治理?
安全·开源·代码规范·设计规范·代码复审
前端开发呀9 小时前
🔥 99%由 Trae AI 开发的 React KeepAlive 组件,竟然如此优雅!✨
前端·trae
大筒木老辈子11 小时前
Git笔记---其他常用操作
笔记·git
AAA阿giao11 小时前
不是程序员也能玩?Trae助你一键变身Chrome扩展开发大师,打造个性Hulk插件!
ai编程·trae·vibecoding
天天摸鱼的java工程师11 小时前
🚀八年Java程序员的AI初体验:用TRAE SOLO构建智能问答系统全过程实录
trae
天天摸鱼的java工程师11 小时前
📅6 小时搞定会议室预约系统:TRAE SOLO SOLO Coder 生成 CRUD 全流程
trae
小二·12 小时前
Git 高频操作命令大全(分类整理 + 修正说明)
大数据·git·elasticsearch
目南殇15 小时前
Git 命令基础使用指南:从初始化到提交的完整流程
git
crossoverJie15 小时前
Git cherry-pick 使用小技巧
git·github