我错误地推送到heroku并使用heroku rollback将其推回到以前的版本。这很好,我的heroku应用程序现在提供回滚版本。
但是当一位同意拉过“损坏”推送的同事试图在回滚后检查“正确”版本时,他从主分支机构的git checkout给了他“损坏”版本而不是回滚版本。
任何想法为什么Heroku回滚应用程序而不是主要的git repo?
答案 0 :(得分:3)
理想情况下,你不应该使用Heroku来托管你的Git仓库,但是:
Heroku运行的版本和Git repo上的HEAD提交是两回事。当你推动时,它会告诉Heroku轨道炮编译HEAD并进行部署。当你回滚时,它告诉railsguns为前一次提交编译一个slug。它对Git仓库没有任何作用。
因此,在回滚之后,Heroku运行HEAD -1而Git仓库不受影响。
答案 1 :(得分:0)
通过查看终端中的先前版本,找到您所追回的回滚版本号。 (n后面的值表示您想要查看的条目数。最后~15个应用程序编辑显示" heroku发布")
heroku releases -n 7
终端将显示您请求的最后一个应用程序版本/版本。
user@computer:~/dev/my-great-app$ heroku releases -n 7
=== my-great-app Releases
v36 Rollback to v34 email@example.com 2016/12/01 04:49:01 (~ 3h ago)
v35 Deploy 7234c83 email@example.com 2016/12/01 03:26:58 (~ 5h ago)
v34 Deploy 1367a4f email@example.com 2016/11/30 21:25:07 (~ 11h ago)
v33 Set RAILS_ENV config vars email@example.com 2016/11/30 13:12:18 (~ 22h ago)
v32 Deploy 4536b70 email@example.com 2016/11/16 18:16:58
v31 Deploy 731f37c email@example.com 2016/10/23 04:33:18
v30 Deploy 1fb79a6 email@example.com 2016/10/12 04:52:00
选择要提取的部署。 (在这种情况下,我选择了1367a4f,因为v34是应用程序的干净版本。)
git pull heroku 1367a4f
您现在可以从heroku回滚版本获得应用程序的副本。要保存此副本,请确保在您的git环境中为其创建分支。如果你已经死了,你可以为了安心,复制整个目录并将其存放在某处,但这并不是必需的。 (请不要将此答案标记下来,以便为那些仍然使用git稍微摸索的人建议目录备份。)