Je me suis engagé et l'ai poussé vers Origin et Heroku
Puis j'ai réalisé que c'était mal, alors je l'ai fait
git reset --soft HEAD^
Mais quand je pousse vers Heroku je me fais
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.
Je comprends le problème. Comment dois-je procéder? Comment puis-je annuler la dernière validation de Heroku? (Je suppose que ce serait la meilleure solution)
Si vous avez annulé le commit localement, vous devrez peut-être git Push
avec un -f
option pour forcer la validation.
En outre, vous voudrez peut-être jeter un œil à versions Herok qui peuvent également aider.
De http://devcenter.heroku.com/articles/releases#rollback
Utilisez la commande de restauration pour revenir à la dernière version:
$ heroku rollback
Rolled back to v51
Vous pouvez choisir de spécifier une autre version à cibler:
$ heroku rollback v40
Rolled back to v40
Étant donné que vous avez déjà poussé vers d'autres référentiels (publics?), La meilleure façon de résoudre ce problème est probablement d'annuler le git reset
localement, puis faites un git revert
pour créer un nouveau commit qui inverse les effets du mauvais commit. Poussez ensuite tout à nouveau. Donc, étape par étape:
Alors d'abord git reset --hard Origin/master
ou git reset --hard heroku/master
(ou quel que soit le nom de votre branche de suivi de Heroku), afin de récupérer votre master
local mauvais commit. Cela supprimera tous les changements en suspens dans votre copie de travail, alors soyez prudent.
Ensuite git revert HEAD
pour créer un nouveau commit (il vous demandera un message de commit).
Poussez ensuite comme vous le feriez habituellement.
Voici ce que j'ai fait. Tout d'abord, j'ai créé une nouvelle branche avec l'ancien commit:
git checkout -b old-rev <commit-id>
Puis j'ai couru Push -f
l'ancienne branche du dépôt local au maître de heroku:
git Push -f heroku old-rev:master
Lorsque j'en ai terminé avec l'ancienne version et que je suis prêt à passer à la nouvelle version:
git checkout master
git Push heroku master
git branch -d old-rev # deletes the old branch; warns if there will be data loss