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?
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.
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
.
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>