能否从同一代码库部署多个Heroku应用?如何关联Git到多应用?
同一Git仓库部署不同版本到多个Heroku应用解决方案
可行性确认
完全可行。Heroku支持从同一Git仓库的不同版本(标签/分支)部署到独立的Heroku应用,完全匹配你的需求——将TackleSoft的v1.0和v1.4分别部署到Joe's Bait shop和Bob's tackle两个应用。
具体操作步骤
1. 创建目标Heroku应用
先通过命令行或Heroku后台创建两个独立应用:
# 创建Joe的渔具店应用(对应v1.0) heroku create joes-bait-shop # 创建Bob的渔具店应用(对应v1.4) heroku create bobs-tackle
(应用名需符合Heroku命名规则,若重名会自动生成随机名,可后续在后台修改)
2. 给本地Git仓库添加多个Heroku远程
将两个Heroku应用作为远程仓库关联到本地TackleSoft仓库,用自定义别名区分:
# 关联Joe的应用,远程别名为heroku-joe heroku git:remote -a joes-bait-shop -r heroku-joe # 关联Bob的应用,远程别名为heroku-bob heroku git:remote -a bobs-tackle -r heroku-bob
执行git remote -v可查看已关联的所有远程,确认两个Heroku远程添加成功。
3. 部署指定版本到对应应用
方式一:通过Git标签部署(推荐,适合固定版本)
如果仓库已为v1.0和v1.4打了标签(未打标签可执行git tag v1.0 <对应提交ID>、git tag v1.4 <对应提交ID>),直接推送标签到对应远程:
# 把v1.0版本部署到Joe的应用 git push heroku-joe v1.0:main # 把v1.4版本部署到Bob的应用 git push heroku-bob v1.4:main
注意:main是Heroku默认部署分支,若仓库默认分支为master,替换成master即可。
方式二:通过独立分支部署
如果需要后续对某个版本迭代维护,可为每个版本创建专属分支:
# 基于v1.0创建Joe的生产分支 git checkout -b joe-production v1.0 # 部署到Joe的应用 git push heroku-joe joe-production:main # 基于v1.4创建Bob的生产分支 git checkout -b bob-production v1.4 # 部署到Bob的应用 git push heroku-bob bob-production:main
后续更新时,切换到对应分支修改代码,再执行git push <远程别名> <分支名>:main即可。
额外问题:Git关联多个Heroku应用的方法
核心是给本地Git仓库添加多个Heroku远程仓库:
- 使用
heroku git:remote -a <Heroku应用名> -r <自定义远程别名>命令,为每个应用创建独立的远程关联; - 用
git remote -v查看所有已关联的远程,确认别名和地址对应正确; - 部署时指定对应的远程别名,即可将指定版本推送到目标Heroku应用。
内容的提问来源于stack exchange,提问作者MrLister
相关产品推荐
相关产品推荐

