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