我的Rails应用程序中有以下方案,但是可以将方案应用于任何其他应用程序,您不希望将开发凭据推送到公共存储库,如Github。
所以我有文件config/database.yml
,我有我的本地MySQL数据库凭据,我真的不想将这些细节公开,所以想法是有一个副本,例如初始{ {1}}使用虚拟数据,然后将其推送到远程存储库,将其添加到.gitignore,并将其从跟踪中删除,然后使用实际数据库凭据在本地存储库中更新此文件。在我这样做之后:
database.yml
,文件实际上是从我的远程存储库中删除的。如何防止这种情况,在我推送初始配置文件之后,忽略它,但是将此文件的初始提交保留在远程repo上?
我的.gitignore有一行忽略文件git rm --cached config/database.yml
config/database.yml
长话短说,我希望在我的本地和远程存储库中有两个不同的文件副本,一旦我用实际的MySQL服务器连接凭证更新# Ignore config/database.yml
/config/database.yml
文件,我就不想跟踪更改
答案 0 :(得分:1)
永远不要将database.yml
提交给版本控制。将其添加到.gitignore
而是使用一些虚拟值提交名为example.database.yml
的副本。然后,您的部署过程将复制示例并替换秘密值。
否则你将陷入维护噩梦中,忽略配置文件,然后在需要进行框架更改时暂时忽略它,并且总是潜伏着不小心将密码提交给版本控制的危险。
答案 1 :(得分:0)
您可以使用
git update-index --assume-unchanged config/database.yml
忽略对跟踪文件的本地更改。