Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.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:只将私有配置文件推送到测试存储库,而不推送到github?_Git_Github_Config - Fatal编程技术网

Git:只将私有配置文件推送到测试存储库,而不推送到github?

Git:只将私有配置文件推送到测试存储库,而不推送到github?,git,github,config,Git,Github,Config,我有一个带有config/my_private_data.yml文件的Rails应用程序。我想将整个应用程序推送到我的测试服务器和github 但是,当我推送到测试服务器时,我希望包含私有文件。当我推送到github时,我不想包含私有文件。最简单的方法是什么?您可以设置两个分支主机和机密。然后可以在secret分支中添加并提交config/my\u private\u data.yml,然后将其推送到testserver的主分支中 touch config/my_private_data.yml

我有一个带有
config/my_private_data.yml
文件的Rails应用程序。我想将整个应用程序推送到我的测试服务器和github


但是,当我推送到测试服务器时,我希望包含私有文件。当我推送到github时,我不想包含私有文件。最简单的方法是什么?

您可以设置两个分支<代码>主机和
机密
。然后可以在
secret
分支中添加并提交
config/my\u private\u data.yml
,然后将其推送到testserver的主分支中

touch config/my_private_data.yml
git checkout -b secret
git add config/my_private_data.yml
git commit -m 'Commited secret file'
git push testserver_repo_url secret
git checkout master
git push repo_on_github master
然后做一个
git校验密码;git rebase master
如果您在master上有新的提交。
不要在
secret
上提交,如果您提交了,请仔细挑选该提交



当然,这种方法并非都是好的。从我现在的想法来看,您可能会无意中将秘密分支推到github。此外,如果您需要
my_private_data.yml
-文件,则无法在
master
中工作(不过您可以从秘密分支签出该文件)

有多隐私?如果它是一个大型的desaster文件,如果该文件成为公共文件,则根本不包括它(使用带有默认值的
config/private\u data.yml.template
)。很可能是你,或者有人犯了错误,你在github上或者其他你从未想到过的地方有数据。不是特别隐私,但不是我想分享的东西。我不会将我的核代码发布到github,甚至不会将它们放在我的应用程序中。这里应该有一个解决方案:有没有更好的方法?我的使用案例是,我想推送到github进行备份,但推送到我的测试服务器进行测试,如果没有私有文件,应用程序将无法加载。我想下一个问题是,是否可能出现相反的情况——比如,我在主控上工作,其中包括机密文件,然后我将没有机密文件的主控分支推送到github。是否有一种快速的方法和/或脚本来始终执行分支主控,删除机密文件的所有实例,然后将分支推送到github?@Clay理论上你可以使用钩子(google git钩子),但无法从git中删除机密文件的所有实例(因为你无法更改git历史记录)。您可以有一个分支
public
和一个
private
分支。(这个
master
分支没有什么特别之处,它只是一个名字。)如果你愿意,你可以假装
private
被称为master,只推公共分支。然而,在我的回答中,主分支是公共分支,但实际上这只是我给它起的名字。