首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用git,我如何忽略一个分支中的文件,而在另一个分支中提交它?

使用git,我如何忽略一个分支中的文件,而在另一个分支中提交它?
EN

Stack Overflow用户
提问于 2009-12-03 07:55:23
回答 4查看 82.4K关注 0票数 171

我有一个要部署到Heroku上的项目。源代码树包括一堆mp3文件(该网站将用于一个我曾大量参与的录制项目)。

我想把它的源代码放到GitHub上,但是GitHub对他们的免费账户有300MB的限制。我不想在一堆mp3文件上使用我限制的50MB。显然,我可以将它们添加到.gitignore文件中,以避免它们出现在我的存储库中。

但是,我使用git push heroku部署到Heroku。mp3文件必须存在于我推送到Heroku的分支中,以便部署它们。

理想情况下,我希望在本地主分支中.gitignore mp3文件,这样当我将其推送到GitHub时,就不会包含mp3s。然后,我会保留一个本地生产分支,它会提交而不是忽略mp3s。要进行部署,我会将master合并到production中,然后将production分支推送到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可以很好地处理这类事情(即保留一个本地副本,该副本不会包含在推送到遥控器中),但是当我切换到签入了文件的分支,然后返回到忽略了文件的分支时,这些文件就消失了。

EN

回答 4

Stack Overflow用户

发布于 2009-12-10 04:27:43

我强烈建议考虑将这些MP3文件放到S3上。让它们成为你的Heroku推送的一部分(因此是你的Heroku slug的一部分)将大大减慢你的dyno启动时间。由于Heroku使用EC2,如果文件在S3上,并且只能由你的应用程序访问(如果用户没有直接链接到S3),你甚至不需要支付任何带宽费用,只需支付存储50MB的费用。

票数 14
EN

Stack Overflow用户

发布于 2009-12-04 02:03:16

您是否尝试过让.gitignore在您的分支机构中有所不同?

您应该能够根据您所在的分支忽略您想要的内容,只要该分支上的文件没有被跟踪。

票数 5
EN

Stack Overflow用户

发布于 2009-12-05 09:43:48

你能从Heroku提交和推送吗?

例如,添加音频,将其推送到github和heroku,删除Heroku上的工作副本上的文件。从存储库中删除音频,但不从磁盘中删除,然后将更改推送回github。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1836742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档