ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

TIL 实战:将非 master 分支推送到 Heroku 的正确方式

TIL 实战:将非 master 分支推送到 Heroku 的正确方式 文档教程知识库【免费下载链接】til:memo: Today I Learned项目地址https://gitcode.com/gh_mirrors/ti/til点击查看免费下载导读在基于 Git 的 Heroku 部署流程中平台默认只会在推送到远程master分支时触发构建与发布。本文结合 TIL 仓库中 devops/push-non-master-branch-to-heroku.md 这篇笔记讲清为什么git push heroku staging不会触发部署以及如何借助 Git 的 refspec 语法staging:master把本地非 master 分支安全地部署到 Heroku实现 staging 环境的独立发布。Heroku 的部署规则只有 master 分支才会被构建当使用 Git 向 Heroku 部署应用时平台默认期望推送目标是远程的master分支。执行下面的命令$ git push heroku masterHeroku 会收到这次推送随后尝试构建并运行你的应用。也就是说heroku这个 remote 的master分支是平台的部署入口——推送一旦命中它就会触发 buildpack 构建、release 发布等完整流程。这条规则带来的直接后果是如果应用维护着一个独立的staging分支希望把它推送到 Heroku 上的 staging 环境直接执行下面这条命令是行不通的$ git push heroku stagingHeroku 只会对推送到远程master分支的提交执行构建。因此上述命令虽然会向远程staging分支写入提交却不会触发任何构建与部署staging 环境也就得不到更新。解决方案用 refspec 把本地分支映射到远程 master要绕过这个限制思路是让本地分支名与远程分支名解耦——本地仍然推送staging但在 refspec 中显式声明它对应远程的master分支$ git push heroku staging:master这条命令的含义是把本地staging分支的提交推送到herokuremote 的master分支。由于最终落点仍是远程masterHeroku 的部署钩子会被正常触发从而完成对 staging 应用的构建与发布。这是git push中src:dstrefspec 标准写法的典型应用。它并不只适用于 Heroku——在 git/push-to-a-branch-on-another-remote.md 这篇 TIL 中同样的语法被用来将本地staging分支推送到某个 remote 的main分支$ git push heroku staging:main两处用法唯一的区别只是目标分支名mastervsmain语法与原理完全一致。这也说明凡是本地分支名与目标远程分支名不一致的推送场景都可以借助该 refspec 语法完成映射。进阶用HEAD让当前分支直接部署如果不想每次手写分支名TIL 仓库的 git/push-to-a-branch-on-another-remote.md 还记录了一种更轻量的写法$ git push heroku HEADHEAD代表当前检出的分支这条命令会把当前分支的状态推送到herokuremote 上同名的分支。结合本文主题如果当前正处在staging分支上希望部署到 Heroku可以组合使用$ git push heroku HEAD:master将当前分支的提交直接映射到 Heroku 的master分支省去显式写分支名。这类把当前分支推送到另一个名字的远程分支的需求与上文staging:master属于同一类 refspec 应用。部署前后的配套实践围绕非 master 分支上 Heroku这一场景TIL 仓库还记录了若干配套操作值得一并参考分支改动与试运行heroku/deploy-a-review-app-to-a-different-stack.md 提到在做 Ruby 版本升级、切换 stack如从heroku-16到heroku-18等变更后可以先把改动推到分支再转成 PR通过 Heroku 的 Review App 在临时环境验证避免直接冲击生产。这与本文先走 staging 分支、再部署的思路一脉相承。环境隔离确认Heroku 上每个应用有独立的配置与数据库staging 与 production 通常是两个独立 App。部署前建议先确认当前仓库的herokuremote 指向的是 staging 应用而非生产应用可用git remote -v查看 remote 地址。小结把非 master 分支推送到 Heroku 的关键就一句话Heroku 只认远程master分支的推送因此用git push heroku staging:master这种 refspec 语法完成分支映射。掌握这一写法后无论分支叫staging、dev还是别的名字都能在保留本地分支命名习惯的同时顺利触发 Heroku 的构建部署流程。赞分享文档教程知识库【免费下载链接】til:memo: Today I Learned项目地址https://gitcode.com/gh_mirrors/ti/til点击查看免费下载相关推荐PX4 开发实战将分支安全 rebase 到 main正确处理已被 squash-merge 的父分支PX4 开发实战将分支安全 rebase 到 main正确处理已被 squash merge 的父分支 导读 本文以 PX4 Autopilot 仓库内置的嵌入式物联网机器人自动驾驶智能硬件Stable Diffusion Forge 本地部署 AI 绘图一次跑通 WebUI 并锁死访问边界Stable Diffusion Forge 本地部署 AI 绘图一次跑通 WebUI 并锁死访问边界 上礼拜同事图省事把 AI 绘图 WebUI 直接暴露后端Web框架Mumble 翻译回移植实战用 backportTranslations.py 将 master 分支的最新翻译安全同步到稳定分支Mumble 翻译回移植实战用 backportTranslations.py 将 master 分支的最新翻译安全同步到稳定分支 Mumble 是开源的低延音视频即时通讯上一篇AtlasOS显卡性能优化深度指南从原理到实践的完整技术方案下一篇极速网盘解析工具多平台文件直链提取解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表