heroku rollback没有更新HEAD远程分支,做到了吗?

时间:2012-03-27 21:54:58

标签: git heroku rollback

我错误地推送到heroku并使用heroku rollback将其推回到以前的版本。这很好,我的heroku应用程序现在提供回滚版本。

但是当一位同意拉过“损坏”推送的同事试图在回滚后检查“正确”版本时,他从主分支机构的git checkout给了他“损坏”版本而不是回滚版本。

任何想法为什么Heroku回滚应用程序而不是主要的git repo?

2 个答案:

答案 0 :(得分:3)

理想情况下,你不应该使用Heroku来托管你的Git仓库,但是:

Heroku运行的版本和Git repo上的HEAD提交是两回事。当你推动时,它会告诉Heroku轨道炮编译HEAD并进行部署。当你回滚时,它告诉railsguns为前一次提交编译一个slug。它对Git仓库没有任何作用。

因此,在回滚之后,Heroku运行HEAD -1而Git仓库不受影响。

答案 1 :(得分:0)

  1. 通过查看终端中的先前版本,找到您所追回的回滚版本号。 (n后面的值表示您想要查看的条目数。最后~15个应用程序编辑显示" heroku发布")

    heroku releases -n 7
    
  2. 终端将显示您请求的最后一个应用程序版本/版本。

    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
    
  3. 选择要提取的部署。 (在这种情况下,我选择了1367a4f,因为v34是应用程序的干净版本。)

    git pull heroku 1367a4f
    
  4. 您现在可以从heroku回滚版本获得应用程序的副本。要保存此副本,请确保在您的git环境中为其创建分支。如果你已经死了,你可以为了安心,复制整个目录并将其存放在某处,但这并不是必需的。 (请不要将此答案标记下来,以便为那些仍然使用git稍微摸索的人建议目录备份。)