233 votes

Comment supprimer les n derniers commits sur Github et localement ?

J'essaie de supprimer les 2 derniers commits d'un de mes dépôts GitHub. J'ai essayé comme suggéré aquí : git push -f origin HEAD^^:master . Il semble que cela fonctionne, car les deux derniers commits sont supprimés.

Ensuite, je les ai supprimés de mon dépôt local avec git rebase -i HEAD~2 . Je supprime les lignes qui sont liées à ces commits, et je vérifie avec git log qu'ils sont correctement retirés.

Après cela, je fais quelques changements dans mon dépôt local, je fais un nouveau commit, et je pousse vers GitHub. Le problème est que, dans mon compte GitHub, j'ai les deux commits précédents que j'ai essayé de supprimer.

Je pense que le problème vient de mon dépôt local, car si je clone mon dépôt Github sur mon dépôt local et que j'y fais des modifications, lorsque je pousse un nouveau commit, ces anciens commits ne sont pas poussés sur GitHub.

306voto

KL-7 Points 14154

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

git reset --hard HEAD^^

Le rebasement est une opération complètement différente qui ne vous sera d'aucune utilité ici.

238voto

Dherik Points 115

Si vous souhaitez supprimer les 2 (deux) derniers commits, il existe une commande simple pour le faire :

git reset --hard HEAD~2

Vous pouvez modifier les 2 pour n'importe quel nombre de derniers commits que vous souhaitez supprimer.

Et pour transférer cette modification à distance, vous devez effectuer un git push avec le force ( -f ) :

git push -f

Cependant, Je ne recommande pas de faire n'importe quelle git avec la commande -f o --hard options impliquées s'il y a nouveaux commits à distance (Github) après ce commit que vous souhaitez supprimer. Dans ce cas, utilisez toujours git revert .

54voto

Sial01 Points 601

Voici ce qui fonctionne pour moi

git reset HEAD~n

Il supprime le dernier n des commits du repo local, en tant que HEAD^ n'en supprime qu'un seul. Si vous avez besoin de supprimer ces modifications à distance, vous devrez peut-être forcer la poussée car vous serez derrière la distance.

git push -f origin <branch>

10voto

Ambika Prasad Points 101

Pour supprimer les n dernières modifications :

git reset HEAD~n

Si vous avez besoin de supprimer ces changements à distance, vous devrez peut-être forcer la poussée car vous serez derrière la distance.

git push -f origin <Branch Name>

2voto

Habib01 Points 43

Si vos changements n'ont pas encore été poussés, entrez simplement la commande.

git reset --hard HEAD~n 

Si vous avez déjà transféré vos modifications, vous devrez exécuter le code suivant.

git push origin HEAD --force

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X