但是我们有时候需要有一个配置文件,例如数据库的连接信息,每个开发者的连接信息都是不一样的。但是又要提供一个标准的模板来告知如何填写连接信息,那么就需要在仓库中记录一个标准配置文件,然后每个人根据自己的具体情况配置一份连接信息自用,但是不会将这个配置文件提交到仓库里。
能不能先将其纳入版本控制,然后再编写.gitignore来忽略这个文件?这样一来别的开发者也有这个文件了。
答案是:不能,刚才我们说了,已经提交的文件不能直接通过.gitignore来忽略这个文件。一旦修改了这个配置文件,git仍然会检测到的。当然有一个做法是通过git update-index --assume-unchanged。这个待会讨论。
对于这个需求,一些知名的开源项目是这样处理的,可以将其当做一个最佳实践
对于充当模板的文件,在文件名加以区分
例如实际配置文件叫database.conf,在写好模板后更名为database.conf.example。git将database.conf.example纳入管理,但是忽略database.conf。在项目中约定,每个人clone下项目之后,复制database.conf.example为database.conf,然后修改database.conf文件。这样既满足了项目的模板配置文件能够下发到每个参与开发的人,又不会跟踪每个人编写的配置文件