GIT中如何配置使指定文件不被跟踪,同时克隆可获取默认配置
先讲清楚为什么你现在的设置不生效
很多人配置完.gitignore就以为万事大吉,但实际上.gitignore只对从来没被Git跟踪过的文件起作用。如果那份ini之前已经被提交到仓库里了,哪怕你把它写进忽略列表,Git还是会一直盯着它的本地修改,不停提示你有未提交的变更——这就是你现在遇到的问题根源。
一步步照着做就能解决
- 把仓库里存的全量默认配置拆成两份定位明确的文件
你现在仓库里那份带着所有配置键说明的默认ini,先把它另存为Git永久跟踪的模板文件,比如叫config.ini.example。这个文件就当公开的配置参考,所有克隆仓库的人拉下来就能看到完整的可配置项列表,完全满足你给用户传递默认配置的需求。 - 解除Git对本地可修改的实际配置文件的跟踪
直接在仓库根目录跑这条命令,重点是加--cached参数,不会删除你本地的文件:
这条命令的作用是:把这个文件从Git的跟踪名单里划掉,但本地磁盘上的文件一个字都不许动。你自己调整的那些个性化配置,跑完命令之后会完完整整保留。git rm --cached config.ini - 验证忽略规则
这时候再看你.gitignore里写的config.ini条目,就真的生效了。之后不管你或者其他同事怎么改这份本地的ini,Git都不会再把它的变动当成需要提交的内容。 - 把刚才的调整提交上去
把新增模板文件、取消跟踪的操作正常提交推送到远程:git add .gitignore config.ini.example git commit -m "取消跟踪本地自定义配置,新增默认配置模板" git push
踩过坑的老提醒:如果之前你已经把好几个版本的
config.ini提交到远程仓库了,拉了新代码的同事得各自在本地跑一次上面的git rm --cached config.ini命令——毕竟Git的跟踪状态是存在每个人本地的,你远程改的索引记录,不会自动把别人本地已经在跟踪的文件给取消掉。
嫌麻烦的优化方案:可以在仓库里放个简单的初始化脚本,拉代码之后跑一下就自动把模板文件复制成实际用的config.ini,连手动复制的步骤都省了。
内容的提问来源于stack exchange,提问作者Leandro Caniglia
相关产品推荐
相关产品推荐

