web-dev-qa-db-fra.com

Comment supprimer le n dernier commit sur Github et localement?

J'essaie de supprimer les 2 derniers commits de l'un de mes référentiels GitHub. J'ai essayé comme suggéré ici : git Push -f Origine HEAD ^^: master. Il semble que cela fonctionne, les deux derniers commits sont supprimés.

Ensuite, je les ai supprimés de mon référentiel local avec git rebase -i HEAD ~ 2. Je supprime les lignes qui sont associées à celles-ci et vérifie avec git log qu'elles ont été correctement supprimées.

Après cela, je modifie le référentiel local, crée un nouveau commit et envoie à GitHub. Le problème est que dans mon compte GitHub j'ai les deux derniers commit que j'ai essayé de supprimer.

Je pense que le problème réside dans mon référentiel local car si je clone mon référentiel Github sur mon répertoire local et que je modifie certains paramètres ici lorsque je pousse un nouveau commit, ces anciens commits ne sont pas transmis à GitHub.

Une idée?

98
Ivan Fernandez

Pour supprimer localement les deux derniers commits, je vous suggère d’utiliser:

git reset --hard HEAD^^

Rebase est une opération complètement différente qui ne vous aidera pas ici.

162
KL-7

Si vous souhaitez supprimer les 2 (deux) derniers commits, vous pouvez facilement le faire:

git reset --hard HEAD~2

Vous pouvez changer le 2 pour tout nombre de derniers commits que vous souhaitez supprimer.

Et pour pousser ce changement à distance, vous devez faire un git Push avec la force (-f) paramètre:

git Push -f

Cependant, je ne recommande pas de faire n'importe quelle commande git avec -f ou --hard options impliquées s'il y a nouveaux commits sur la télécommande (Github) après ceci commet que vous souhaitez supprimer. Dans ce cas, utilisez toujours git revert.

67
Dherik

Ce qui suit fonctionne pour moi

git reset HEAD~n

Il supprime les derniers n commits du dépôt local, comme HEAD^ n'en élimine qu'un. Si vous devez supprimer ces modifications de la télécommande, vous devrez peut-être forcer Push car vous serez derrière la télécommande.

git Push -f Origin <branch>
16
Sial01