我有一个项目要部署到Heroku,源代码树包含一堆MP3文件(该网站将用于一个我深度参与的录音项目)。
我想将源代码放在GitHub上,但GitHub的免费账户有300 MB的限制。我不想在一堆MP3文件上使用50MB的限制。显然,我可以将它们添加到.gitignore
文件中以将其排除在我的存储库外。
但是,我使用git push heroku
进行部署。MP3文件必须存在于我推送到Heroku的分支中,以便它们被部署。
理想情况下,我希望在本地主分支中.gitignore
MP3文件,这样当我将其推送到GitHub时,不会包括MP3文件。然后我会保留一个本地生产分支,其中包含提交的MP3文件而不是被忽略的。要部署,我将主分支合并到生产分支,然后将生产分支推送到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
目前,在我的主分支中,Foo.ignored被忽略了,但它仍然存在,因此我的项目可以使用它。
$ git checkout -b unignored
$ cat /dev/null > .gitignore
$ git add Foo.ignored .gitignore && git commit -m "Unignore .ignored files"
现在我已经有一个分支,这些文件已经提交,正如我所希望的。然而,当我切换回我的主分支时,Foo.ignored 文件消失了。有人有更好的设置建议吗?
编辑:为了澄清,我希望 mp3 文件在两个分支中都存在,以便在本地运行站点(使用任一分支)时,站点能够工作。我只想在一个分支中忽略文件,以便当我推送到 GitHub 时,它们不会被推送。通常 .gitignore 对于这种情况效果很好(即保留一个本地副本,不包括在远程推送中的文件),但是当我切换到已检入文件的分支,然后切换回已忽略文件的分支时,文件就会消失。