踩坑日记:为什么 .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 终于可以正常工作了

相关推荐
天若有情67313 小时前
【C++原创开源】formort.h:一行头文件,实现比JS模板字符串更爽的链式拼接+响应式变量
开发语言·javascript·c++·git·github·开源项目·模版字符串
海盗123414 小时前
在群晖NAS上使用Git Server
git
y小花14 小时前
git常用指令
git
华科大胡子14 小时前
开源项目 Git 贡献全流程拆解
git
极地星光14 小时前
工程中:Git 子模块(submodule) vs 直接依赖(源码/库/包管理器)
git
无限进步_15 小时前
【C++&string】大数相乘算法详解:从字符串加法到乘法实现
java·开发语言·c++·git·算法·github·visual studio
无限进步_16 小时前
【C++】验证回文字符串:高效算法详解与优化
java·开发语言·c++·git·算法·github·visual studio
catch_pig18 小时前
告别繁琐配置:Catchpig Detekt Plugin 让 Kotlin/Android 代码检查开箱即用
kotlin·android studio·代码规范
无限进步_20 小时前
【C++】重载、重写和重定义的区别详解
c语言·开发语言·c++·ide·windows·git·github
历程里程碑20 小时前
1 . Git本地操作:版本控制 跨平台协作 仓库核心
java·开发语言·数据结构·c++·git·gitee·github