Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GIT-如何从跟踪中删除本地文件,但将副本保留在远程存储库中?_Git_Github - Fatal编程技术网

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

GIT-如何从跟踪中删除本地文件,但将副本保留在远程存储库中?,git,github,Git,Github,在我的Rails应用程序中,我有一个下面的场景,但该场景可以应用于任何其他应用程序,在这些应用程序中,您不希望将您的开发凭据推送到Github之类的公共存储库 所以我有一个文件config/database.yml,其中有我的本地MySQL数据库凭据,我真的不想公开这些细节,所以我的想法是有一个副本,例如带有虚拟数据的initialdatabase.yml,然后将其推送到远程存储库,添加到.gitignore,并将其从跟踪中删除,然后使用实际的数据库凭据在本地repo中更新此文件。在我这样做之后

在我的Rails应用程序中,我有一个下面的场景,但该场景可以应用于任何其他应用程序,在这些应用程序中,您不希望将您的开发凭据推送到Github之类的公共存储库

所以我有一个文件
config/database.yml
,其中有我的本地MySQL数据库凭据,我真的不想公开这些细节,所以我的想法是有一个副本,例如带有虚拟数据的initial
database.yml
,然后将其推送到远程存储库,添加到.gitignore,并将其从跟踪中删除,然后使用实际的数据库凭据在本地repo中更新此文件。在我这样做之后:

git rm--cached config/database.yml
,该文件实际上已从我的远程存储库中删除。在推送初始配置文件后,忽略它,但将该文件的初始提交保留在远程repo上,如何防止这种情况发生

My.gitignore有一行可以忽略文件
config/database.yml

# Ignore config/database.yml
/config/database.yml

长话短说,我希望在本地和远程存储库中有两个不同的文件副本,并且我不希望在使用实际的MySQL服务器连接凭据更新
database.yml
文件后跟踪更改。

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

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

否则,您将陷入一场维护噩梦,忽略配置文件,然后在需要进行框架更改时暂时取消忽略它,并且始终潜伏着意外向版本控制提交密码的危险。

您可以使用

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

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

实际上,这并不总是有效的,您应该使用
git update index--skip worktree
查看了解更多信息。