48 votes

Annuler le dernier commit dans Heroku

J'ai fait un commit et je l'ai poussé vers l'origine et Heroku

Ensuite, j'ai réalisé que c'était faux, donc j'ai fait

git reset --soft HEAD^

Mais quand je pousse vers Heroku, j'obtiens

git@heroku.com:app.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@heroku.com:app.git'
Pour vous empêcher de perdre l'historique, les mises à jour non-fast-forward ont été rejetées
Fusionnez les modifications distantes (par exemple "git pull") avant de pousser à nouveau.  Voir la
section 'Note sur les avancées rapides' de 'git push --help' pour plus de détails

Je comprends le problème. Comment dois-je procéder? Comment puis-je aussi annuler le dernier commit Heroku? (Je suppose que ce serait la meilleure solution)

67voto

John Beynon Points 23163

Si vous avez annulé le commit localement, vous devrez peut-être faire un git push avec l'option -f pour forcer l'envoi du commit.

De plus, vous voudrez peut-être jeter un coup d'œil aux versions Heroku qui pourraient vous être utiles.

47voto

Devi Points 486

De http://devcenter.heroku.com/articles/releases#rollback

Utilisez la commande rollback pour revenir à la dernière version :

$ heroku rollback
Retour à la version v51

Vous pouvez choisir de spécifier une autre version cible :

$ heroku rollback v40
Retour à la version v40

9voto

Dave Goodell Points 1770

Étant donné que vous avez déjà poussé vers d'autres dépôts (publics ?), la meilleure façon de corriger cela est probablement d'annuler le git reset localement, puis d'effectuer un git revert pour créer un nouveau commit qui annule les effets du mauvais commit. Ensuite, repoussez tout. Donc étape par étape :

  1. Donc d'abord git reset --hard origin/master ou git reset --hard heroku/master (ou quel que soit le nom de votre branche de suivi heroku), afin de retrouver votre master local avant le mauvais commit. Cela supprimera toutes les modifications en attente dans votre copie de travail, alors faites attention.

  2. Ensuite git revert HEAD pour créer un nouveau commit (il vous demandera un message de commit).

  3. Ensuite poussez comme vous le feriez habituellement.

0voto

bat Points 5380

Voici ce que j'ai fait. Tout d'abord, j'ai créé une nouvelle branche avec l'ancien commit :

git checkout -b old-rev 

Ensuite j'ai exécuté push -f pour pousser l'ancienne branche sur le dépôt local de Heroku :

git push -f heroku old-rev:master

Lorsque j'ai terminé avec l'ancienne version et suis prêt à passer à la nouvelle version :

git checkout master
git push heroku master
git branch -d old-rev  # supprime l'ancienne branche ; avertit s'il y aura une perte de données

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X