Heroku部署异常:原staging环境显示新文件夹代码问题排查
问题原因与解决方案
核心原因
你复制项目文件夹时,把隐藏的.git目录也一并复制了——这个目录存储着Git仓库的所有元数据(包括远程关联、提交历史、分支信息),导致两个项目文件夹共享同一个Git仓库实例。后续操作的连锁反应直接造成原staging环境被新代码覆盖:
- 在新文件夹添加新远程的操作,实则修改了共享的
.git仓库,原文件夹的远程配置也被悄悄改动; - 你在新文件夹修改的应用名称等代码,会被提交到这个共享仓库,当原文件夹执行rebase和推送时,这些修改被同步到了原staging环境;
- 甚至可能你在操作时,误把原文件夹的
staging远程指向改成了新应用的环境,导致推送的代码直接覆盖了原staging。
修复步骤
1. 拆分两个项目的Git仓库(必须执行)
两个项目需要完全独立的Git仓库,避免后续再出现互相干扰:
- 处理原项目文件夹:
# 删除共享的.git目录 rm -rf .git # 重新初始化Git仓库 git init git add . git commit -m "重新初始化原项目独立仓库" # 重新关联原Heroku staging和生产环境 heroku git:remote -a 你的原staging应用名称 git remote rename heroku staging heroku git:remote -a 你的原生产应用名称 git remote rename heroku production - 处理新项目文件夹:
rm -rf .git git init git add . git commit -m "重新初始化新项目独立仓库" # 关联新的Heroku staging环境 heroku git:remote -a 你的新staging应用名称 git remote rename heroku staging
2. 恢复原staging环境的正确代码
回到原项目文件夹,确认远程关联正确后,强制推送原代码覆盖错误内容:
# 检查远程地址是否正确指向原staging git remote -v # 强制推送原项目代码到staging git push staging main --force
注意:
--force会直接覆盖远程分支的现有内容,执行前确认你确实要恢复原项目代码到staging环境。
内容的提问来源于stack exchange,提问作者superbot
相关产品推荐
相关产品推荐

