我有一个要部署到Heroku的项目。源代码树包含一堆mp3文件(该网站将用于与我密切相关的录音项目)。
我想将其源代码放在GitHub上,但是GitHub的免费帐户限制为300 MB。我不想在一堆mp3文件上使用50 MB的限制。显然,我可以将它们添加到.gitignore
文件中以将其排除在我的存储库之外。
但是,我使用部署到Heroku git push heroku
。mp3文件必须存在于我推送到Heroku的分支中,以便部署。
理想情况下,我希望.gitignore
在本地master分支中找到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
此时,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可以很好地用于这种情况(即,保留文件的本地副本,该副本不会包含在推送到远程的操作中),但是当我切换到带有已签入文件的分支,然后返回到忽略文件分支,文件消失。