项目的环境配置文件在版本控制中的常用处理方法 - 让 git 忽略已提交且有修改的文件
项目环境配置文件一般存储一些例如数据库访问凭证、应用程序AKSK、其他可配置信息,处理方式大致两大类,一类是不添加至版本控制,另一类则是添加至版本控制,但是该怎么做才能方便管理和使用呢?
概述
在多人开发过程中,每个人的环境配置不一样很正常,而且需要公开源代码的情况下,也最好不要将本地(或服务器)的一些环境配置信息提交到代码库中,据我所知通常有两种做法:
- 使用例如
.env
的单文件来配置环境变量,添加至.gitignore
文件中,然后创建一个.env.example
,这种环境配置文件可以不必添加至版本库中 - 除了总的环境配置,可能在一些情境下(例如不想管理
.env
文件,或者更结构化地存储各个配置)需要使用其他的可配置的文件比如config.php
,config.h
之类的,这类文件一般需要被添加到版本库中
使用 .env
文件
在上述的第一种方法中,由于 .env
文件不会被添加至版本库中,在 .gitignore
中也有忽略,所以修改配置也可以毫不顾虑地使用 git add *
或者 git commit -a
来提交所有更改而不带入本地的配置信息。
但在配置项目增减后,也需要对 .env.example
的键名进行同步维护更新(而这常常会忘记),这样会导致其他人通过 .env.example
了解的可配置项(必须配置项)与实际情况有误。
将配置文件添加至版本库(并让 git 不再跟踪文件变动)
而使用第二种方法,将配置文件添加至版本库中,通常添加的是空白版本,而提交至版本库中后本地/服务器一般当然是要基于实际情况进行修改的,此时 git 就会提示文件有变动,于是就没法使用 git add *
或者 git commit -a
来玩耍了,不过还是有解决方法滴~
- 使用
git update-index --assume-unchanged {file}
命令可以让 git 不再跟踪目标文件的状态(假设其一直处于未修改的情况) - 使用
git update-index --no-assume-unchanged {file}
可以让 git 重新跟踪目标文件状态