Git:提交代码时忽略指定文件夹且不删除该文件夹如何解决?
解决Gitignore添加后目标文件夹被删除的问题
嘿,我完全懂你现在的困扰——本来想通过.gitignore忽略生产服务器文件夹,结果它反倒被删除了,这确实挺闹心的。咱们一步步来搞定这个问题:
为什么会出现这种情况?
核心原因是:这个生产文件夹之前已经被Git追踪过了。当你突然把它加入.gitignore时,Git会默认认为你要移除这个被追踪的目录,所以在后续的提交、拉取操作中,就会把它从本地(甚至远程)删除。
具体解决步骤
1. 先恢复本地被删除的文件夹
如果你的文件夹已经被删除,先把它找回来:
- 要是还没提交删除操作,直接用命令恢复:
git restore <你的生产文件夹路径> - 要是已经提交了删除,可以从Git历史里恢复:
(这个命令会从最近一次提交的版本里把文件夹拉回来,记得替换成实际路径)git checkout HEAD~1 -- <你的生产文件夹路径>
2. 停止Git对该文件夹的追踪(但保留本地文件)
这一步是关键,一定要加--cached参数,它只会移除Git的追踪关系,不会删除本地的文件:
git rm -r --cached <你的生产文件夹路径>
比如你的生产文件夹叫prod-server,那命令就是git rm -r --cached prod-server/(末尾的斜杠确保Git识别为文件夹)
3. 确保.gitignore规则正确
打开你的.gitignore文件,确认已经添加了正确的规则:
# 忽略生产服务器文件夹 prod-server/
(同样,末尾的斜杠不能少,不然可能会忽略同名文件而不是文件夹)
4. 提交并推送更改
现在把这些修改提交到本地仓库:
git add .gitignore git commit -m "停止追踪生产服务器文件夹并添加到gitignore"
注意:关于远程仓库的处理
如果远程仓库里已经存在这个生产文件夹,这次提交推送到远程后,远程的该文件夹会被删除!所以:
- 如果远程的生产文件夹是有用的,先在远程服务器上备份这个文件夹,再推送;
- 要是团队协作,记得提前告知其他成员,让他们先备份本地的该文件夹,再拉取你的提交。
后续预防措施
- 以后新增需要忽略的文件夹/文件时,先在.gitignore里添加规则,再执行git add操作,避免被Git追踪;
- 团队协作时,确保所有人都同步最新的.gitignore规则,避免出现误提交、误删除的情况。
内容的提问来源于stack exchange,提问作者Rui Costa
相关产品推荐
相关产品推荐

