Comment supprimer le dernier n commit sur Github et localement?
J'essaie de supprimer les 2 derniers commits dans l'un de mes dépôts GitHub. J'ai essayé comme suggéré ici : git push-F origin 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 que sont liées à ces commit, et vérifie avec git log qu'elles sont correctement supprimées.
Après cela, je fais quelques modifications dans mon référentiel local, fais un nouveau commit et pousser à GitHub. Le problème est que dans mon compte GitHub j'ai les deux précédents commit que j'ai essayé de supprimer.
Je pense que le problème est dans mon référentiel local parce que si je clone mon référentiel Github à mon local, et apporte quelques modifications ici quand je pousse un nouveau commit, ces anciens commits ne sont pas poussés vers GitHub.
Une idée?
3 réponses
Pour supprimer les deux derniers commits localement, je 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 voulez supprimer les 2 (deux) derniers commits, il y a une commande facile pour le faire:
git reset --hard HEAD~2
Vous pouvez modifier le 2
pour n'importe quel nombre de dernières validations 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
Toutefois, je ne recommande pas faire tout git
commande avec -f
ou --hard
options en question si il y a nouveaux commits sur la télécommande (Github) après ceci valide 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 commits n
du repo local, car HEAD^
n'en supprime qu'un seul. 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>