GIT - 如何从跟踪中删除本地文件,但是将副本保留在远程存储库中?

时间:2016-11-03 20:03:00

标签: git github

我的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 文件,我就不想跟踪更改

2 个答案:

答案 0 :(得分:1)

永远不要将database.yml提交给版本控制。将其添加到.gitignore

而是使用一些虚拟值提交名为example.database.yml的副本。然后,您的部署过程将复制示例并替换秘密值。

否则你将陷入维护噩梦中,忽略配置文件,然后在需要进行框架更改时暂时忽略它,并且总是潜伏着不小心将密码提交给版本控制的危险。

答案 1 :(得分:0)

您可以使用

git update-index --assume-unchanged config/database.yml

忽略对跟踪文件的本地更改。