如何让Heroku代码库与GitHub同步?Git推送失败求助
让Heroku代码库与GitHub同步的最佳方案及强制推送的可行性
错误原因
你遇到的推送失败,是因为Heroku的master分支包含了本地(及GitHub)没有的提交——团队成员直接推代码到Heroku导致的。此时本地分支的提交落后于Heroku远程分支,Git不允许直接推送。
最佳同步方式
要安全同步两者且不丢失任何代码,步骤如下:
- 拉取Heroku的最新代码到本地临时分支
git fetch heroku git checkout -b heroku-temp heroku/master - 切回本地已同步GitHub的
master分支,合并Heroku的代码
这一步如果有代码冲突,手动解决冲突后完成合并。git checkout master git merge heroku-temp - 将合并后的代码推回GitHub,确保远程仓库统一
git push origin master - 最后推送到Heroku,完成同步
git push heroku master
这种方式能保留所有提交历史,同时让GitHub和Heroku的代码完全一致,也不会丢失团队成员直接推到Heroku的代码。
git push heroku master -f是否可行?
技术上可行,但强烈不建议使用。强制推送会直接覆盖Heroku上的所有现有提交,那些直接推送到Heroku的代码会被彻底删除。如果这些代码是有效的功能修复或紧急变更,这么做会导致生产环境代码回退或丢失,引发业务问题。只有在你100%确认Heroku上的额外提交毫无价值,且已做好备份的前提下,才能考虑使用。
后续规范建议
为避免再出现此类问题,需明确团队流程:
- 禁止任何成员直接推代码到Heroku
- 所有代码必须先提交到GitHub,通过PR审核后再部署
- 可以启用Heroku的自动部署功能,关联GitHub指定分支,合并PR后自动部署到Heroku,确保代码流转唯一且可追溯
内容的提问来源于stack exchange,提问作者DavidM
相关产品推荐
相关产品推荐

