Domanda Git ripristina l'ultimo commit in heroku


Ho fatto un acommit e l'ho spinto all'origine e heroku

Poi ho capito che era sbagliato, così ho fatto

git reset --soft HEAD^ 

Ma quando sto spingendo verso Heroku Im

To git@heroku.com:app.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@heroku.com: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.

Capisco il problema. Come dovrei procedere? Come posso ripristinare anche l'ultimo heroku commit? (Presumo sarebbe la soluzione migliore)


44
2018-03-09 15:34


origine


risposte:


Se hai ripristinato localmente il commit, potrebbe essere necessario git push con un -f opzione per forzare il commit in.

Inoltre, potresti voler dare un'occhiata Rilasciare Heroku che può aiutare anche


63
2018-03-09 15:43



A partire dal http://devcenter.heroku.com/articles/releases#rollback

Utilizzare il comando rollback per tornare all'ultima versione:

$ heroku rollback
Rolled back to v51

Puoi scegliere di specificare un'altra versione di destinazione:

$ heroku rollback v40
Rolled back to v40

37
2018-03-14 11:58



Dato che hai già spinto ad altri repository (pubblici?), Il modo migliore per risolvere questo problema è probabilmente quello di annullare il file git reset localmente, quindi fare a git revert per creare un nuovo commit che inverta gli effetti del commit errato. Quindi spingere di nuovo tutto. Quindi passo dopo passo:

  1. Quindi prima git reset --hard origin/master o git reset --hard heroku/master (o qualunque sia il tuo ramo di tracciamento heroku), al fine di ottenere il tuo locale master indietro il commit sbagliato. Ciò cancellerà qualsiasi cambiamento in sospeso nella tua copia di lavoro, quindi fai attenzione.

  2. Poi git revert HEAD per creare un nuovo commit (ti verrà richiesto un messaggio di commit).

  3. Quindi spingi come faresti normalmente.


7
2018-03-09 15:52



Ecco cosa ho fatto. Innanzitutto, ho creato un nuovo ramo con il vecchio commit:

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

Allora ho corso push -f il vecchio ramo sul repository locale al master di heroku:

git push -f heroku old-rev:master

Quando ho finito con la vecchia versione e pronto per arrivare alla nuova versione:

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

0
2017-09-17 10:22