我们很常会在项目中用到数据库配置,各种服务配置。如果这些配置提交到了github后之后,别人就可以看到我们的私有配置,这会导致各种问题,甚至产生危害,比如被删库等等。 解决的办法是,首先不能在代码中写死这些配置,而是要放到配置文件中。然后我们只需保护好配置文件即可。下面是两种方法。

1.单独创建一个配置模板

比如项目中使用了一个叫db_config.json的配置文件, 那么就新建一个db_config.json.bak的文件。把这个文件提交到github中,把db_config.json添加到gitignore中。 这样别人看到项目就可以知道怎么配置,他只需要把.bak文件复制一份就可以使用自己的配置了。

2.在git里面不追踪这个文件

还有一个办法,就是编辑好基本的db_config.json文件之后,这时候配置文件里面都是默认配置,没有真实的配置,在这个时候提交到github。然后就不追踪这个文件,无论这个文件在本地被怎么样的修改,git都会认为这个文件没有改变。

使用下面的命令解决不追踪的问题:

  • git update-index --assume-unchanged path/to/file.txt //假设文件一直没改变
  • git update-index --no-assume-unchanged path/to/file.txt //取消这个设置

上面命令的作用是,假设这个文件没有修改。在提交了默认的配置之后,我们不管怎么修改git都不认为这个文件修改了,那么把自己的密码放到里面也不会有问题。因为不会被提交。另一个命令是撤销操作。

我们可以直接在命令行里面输入这个命令。也可以在sourcetree中设置custom action来调用

sourcetree 红框里面就是git的路径,也可以不填,这样就是调用默认的git。
参数中就填update-index --assume-unchanged $FILE
这里我使用的是系统里面安装的git,有的时候我们会使用sourcetree内置的git。sourcetree在windows下内置的git路径一般为%USERPROFILE%\AppData\Local\Atlassian\SourceTree\git_local\bin

配置之后我们在配置文件上执行这个自定义操作就可以了。不管怎么修改,git都不会提示这个文件做出了修改。

参考资料

  1. https://www.flyweb.at/blog/network/998/ignoring-local-config-files-with-git-and-sourcetree
  2. https://confluence.atlassian.com/sourcetreekb/using-git-in-custom-actions-785323500.html
  3. https://www.v2ex.com/t/74245