我有一个项目,我正在部署到Heroku。源代码树包括一堆mp3文件(该网站将用于我参与其中的录制项目)。使用git,我如何忽略一个分支中的文件,但让它在另一个分支中提交?
我想将它的源代码放在GitHub上,但GitHub的免费帐户有300 MB的限制。我不想在一堆mp3文件上使用50 MB的限制。很显然,我可以将它们添加到.gitignore
文件中,以防止它们出现在我的回购站中。
但是,我使用git push heroku
部署到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对于这种事情(即保持文件的本地拷贝不会被包含在推送给远程的情况下)效果很好,但是当我切换到分支时检入文件,然后返回到分支文件被忽略,文件消失。
为什么MP3文件* *永远需要被提交到库? – 2009-12-03 02:34:30
使用heroku,提交回购是在部署时获取应用程序中包含的文件的唯一方法。唯一的选择是使用类似亚马逊S3的服务MP3,但我宁愿避免这种情况。 – 2009-12-03 02:40:57
这听起来像是你跳过美元来节省便士...... Rackspace Cloud非常容易安装,并且在那里存储<1 GB的文件花费很少...... – gahooa 2009-12-09 20:31:17