783 votes

Comment écraser les commits dans git après qu'ils aient été poussés ?

Ceci donne une bonne explication de l'écrasement des commits multiples :

http://git-scm.com/book/en/Git-Branching-Rebasing

mais cela ne fonctionne pas pour les commits qui ont déjà été poussés. Comment puis-je écraser les quelques commits les plus récents à la fois dans mon dépôt local et distant ?

EDIT : Quand je le fais git rebase -i origin/master~4 master gardez le premier comme pick et les trois autres sont squash et ensuite quitter (via c-x c-c dans emacs), j'obtiens :

$ git rebase -i origin/master~4 master
# Not currently on any branch.
nothing to commit (working directory clean)

Could not apply 2f40e2c... Revert "issue 4427: bpf device permission change option added"
$ git rebase -i origin/master~4 master
Interactive rebase already started

où 2f40 est le pick commettre. Et maintenant aucun des 4 commits n'apparait dans git log . Je m'attendais à ce que mon éditeur soit redémarré pour que je puisse saisir un message de validation. Qu'est-ce que je fais de mal ?

1059voto

Alan Haggai Alavi Points 34260

Squash commits localement avec git rebase -i et ensuite forcer la poussée avec git push origin +master .

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