web-dev-qa-db-ja.com

Gitはherokuの最後のコミットを元に戻します

コミットしてOriginとherokuにプッシュしました

それから私はそれが間違っていることに気付いたので、私はしました

git reset --soft HEAD^ 

しかし、私がHeroku Imにプッシュしているとき、

To [email protected]:app.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to Push some refs to '[email protected]:app.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git Push --help' for details.

私は問題を理解しています。どうすればいいですか?最後のherokuコミットを元に戻すにはどうすればよいですか? (私は最善の解決策になると思います)

48
Martin

ローカルでコミットを元に戻している場合は、git Push とともに -fオプションを使用して強制的にコミットします。

また、 Herokuのリリース も参考にするとよいでしょう。

65
John Beynon

から http://devcenter.heroku.com/articles/releases#rollback

最後のリリースにロールバックするには、rollbackコマンドを使用します。

$ heroku rollback
Rolled back to v51

ターゲットにする別のリリースを指定することを選択できます。

$ heroku rollback v40
Rolled back to v40
43
Devi

他の(パブリック?)リポジトリにすでにプッシュしている場合、これを修正する最善の方法は、おそらくgit resetローカルで、次にgit revert不正なコミットの影響を元に戻す新しいコミットを作成します。次に、すべてをもう一度プッシュします。だから一歩一歩:

  1. 最初にgit reset --hard Origin/masterまたはgit reset --hard heroku/master(またはherokuトラッキングブランチが呼び出されるもの)、ローカルmasterに悪いコミットを取り戻すため。これにより、作業コピーの未処理の変更がすべて消去されますので、注意してください。

  2. 次にgit revert HEAD新しいコミットを作成します(コミットメッセージの入力を求めます)。

  3. 次に、通常どおりにプッシュします。

9
Dave Goodell

これが私がしたことです。最初に、古いコミットで新しいブランチを作成しました。

git checkout -b old-rev <commit-id>

それから私は走ったPush -f herokuのマスターへのローカルリポジトリの古いブランチ:

git Push -f heroku old-rev:master

古いバージョンでの作業が完了し、新しいバージョンに移行する準備ができたら:

git checkout master
git Push heroku master
git branch -d old-rev  # deletes the old branch; warns if there will be data loss
0
Benjamin Atkin