Comment supprimer le dernier commit sur Github et localement?

J’essaie de supprimer les 2 derniers commits dans 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.

Puis je les ai supprimés de mon repository local avec git rebase -i HEAD ~ 2. Je supprime les lignes qui sont liées à ces commit, et vérifie avec git log qu’elles sont correctement supprimées.

Après cela, j’apporte quelques modifications dans mon référentiel local, effectue un nouveau commit et envoie le fichier à GitHub. Le problème est que dans mon compte GitHub, les deux précédentes sont validées.

Je pense que le problème est dans mon repository local car si je clone mon repository Github dans mon répertoire local et que j’apporte des modifications ici lorsque je pousse un nouveau commit, ces anciens commits ne sont pas transmis à GitHub.

Une idée?

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 souhaitez supprimer les deux (deux) derniers commits, il existe une commande facile à faire:

 git reset --hard HEAD~2 

Vous pouvez modifier le 2 pour n’importe quel nombre de derniers commits à supprimer.

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

 git push -f 

Cependant, je ne recommande pas de faire une commande git avec les options -f ou --hard impliquées s’il y a de nouveaux commits sur remote (Github) après cette validation que vous voulez supprimer. Dans ce cas, utilisez toujours git revert .

Le suivant fonctionne pour moi

 git reset HEAD~n 

Il supprime le dernier n commits du repo local, car HEAD^ n’en supprime qu’un. Si vous devez supprimer ces modifications de la commande à distance, vous devrez peut-être forcer la poussée lorsque vous serez derrière la télécommande.

 git push -f origin