You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Heroku部署报错:无法推送部分引用至Git仓库

Rails部署Heroku遇到pre-receive hook declined错误的排查与解决

核心原因

pre-receive hook declined是Heroku在接收代码前的检查未通过的通用错误,具体原因需要查看完整构建日志才能确定,以下是针对性的排查与解决步骤:

1. 获取完整错误详情

仅看到最终的推送失败提示无法定位问题,必须查看Heroku构建的完整日志:

  • 推送时开启详细输出:
    git push heroku main -v
    
  • 查看最近一次构建的详细信息:
    heroku builds:info
    
  • 实时追踪应用日志:
    heroku logs --tail
    

2. 确认Ruby版本配置

确保Gemfile中明确指定了Heroku支持的Ruby版本(仅本地环境版本匹配但Gemfile未声明会导致错误):
在Gemfile顶部添加:

ruby '3.1.2'

执行bundle install后,将更新后的Gemfile和Gemfile.lock提交至Git仓库。

3. 检查数据库依赖配置

Heroku不支持SQLite作为生产环境数据库,必须替换为PostgreSQL:
修改Gemfile:

group :development, :test do
  gem 'sqlite3'
end

group :production do
  gem 'pg'
end

执行bundle install,提交更新后的Gemfile和Gemfile.lock。

4. 验证资产编译是否正常

Rails 7的资产编译(jsbundling/cssbundling/sprockets)失败会直接终止构建,先在本地模拟生产环境编译:

RAILS_ENV=production rails assets:precompile

如果报错,先解决本地的资产编译问题,再重新推送代码。

5. 检查必要的环境变量

如果应用使用了加密凭证,需将RAILS_MASTER_KEY配置到Heroku:

heroku config:set RAILS_MASTER_KEY=$(cat config/master.key)

同时确保关键环境变量设置正确:

heroku config:set RAILS_ENV=production

6. 重置Heroku远程仓库(可选)

若远程仓库关联存在异常,尝试重新绑定:

git remote remove heroku
heroku git:remote -a stormy-reaches-25258

内容的提问来源于stack exchange,提问作者Zekarias Zico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 01:05:11