我有一个项目,我正在部署到Heroku.源代码树包含一堆mp3文件(该网站将用于我参与的录制项目).
我想把它的源代码放在GitHub上,但是GitHub对他们的免费帐户有300 MB的限制.我不想在一堆mp3文件上使用50 MB的限制.显然,我可以将它们添加到.gitignore文件中,以防止它们被我的回购.
但是,我使用了部署到Heroku git push heroku.mp3文件必须存在于我推送到Heroku的分支中,以便它们得到部署.
理想情况下,我想.gitignore在我的本地主分支中的mp3文件,以便当我将其推送到GitHub时,不包括mp3.然后我会保留一个本地生产分支,其中提交了mp3而不是忽略.要部署,我会将master合并到生产中,然后将生产分支推送到Heroku.
我不能让这个工作正常.
这是我正在尝试做的一个例子......
$ git init git-ignore-test
$ cd git-ignore-test
$ echo "*.ignored" >> .gitignore
$ git add .gitignore && git commit -m "Ignore .ignored files"
$ touch Foo.ignored
Run Code Online (Sandbox Code Playgroud)
此时,Foo.ignored在我的主分支中被忽略,但它仍然存在,所以我的项目可以使用它.
$ git checkout -b unignored
$ cat /dev/null > .gitignore
$ git add Foo.ignored .gitignore && git commit -m "Unignore .ignored files"
Run Code Online (Sandbox Code Playgroud)
现在我有了一个分支,这些文件已经提交,正如我想的那样.但是,当我切换回我的主分支时,Foo.ignored就消失了.
有人有任何建议可以更好地设置它吗?
编辑:只是为了澄清,我希望mp3文件存在于两个分支中,以便当我在本地运行该站点(使用任一分支)时,该站点可以工作.我只想在一个分支中忽略文件,所以当我推送到GitHub时,它们也不会被推送.通常.gitignore适用于这种事情(即保留一个文件的本地副本,但不会包含在推送到遥控器中),但当我切换到签入文件的分支,然后返回到忽略文件的分支,文件消失.
是否有一种简单的方法为不同的遥控器设置不同的.gitignore文件?我有一个存储库,我向Heroku和Github推送.我需要Heroku的database.yml,但不希望将某些信息推送到Github.所以我需要为每个遥控器使用不同的.gitignore文件.
我尝试过两个独立的分支,一个忽略database.yml,另一个不忽略.问题是,当我签出heroku分支并返回我的github分支时,整个database.yml文件都消失了.
有小费吗?
我设计了一个电子邮件程序,SMTP网关具有代码中的身份验证ID和密码.现在,我想将它们提交给heroku而不是github.该项目有多个合作者.因此,我可以创建一个新分支并将密钥保存在那里并将其部署到heroku.这个分支只保留在本地,而不是github.但是,如果我遵循此方法,则所有协作者都必须为heroku维护本地分支,并始终按照以下过程进行部署:1.在master上提交更改2. merge master和heroku branches 3. deploy heroku branch
这似乎容易出错并且具有重复性.不优雅.
我遇到的另一种方法是使用身份验证值进行提交,推送到heroku然后恢复提交.但是,我认为如果我这样做,身份验证值仍会使它成为github.即使github没有身份验证值,每次协作者推送任何新功能时都必须执行此操作.
请建议.