Questo dà una buona spiegazione della compressione di più commit:
http://git-scm.com/book/en/Git-Branching-Rebasing
ma non funziona per i commit che sono già stati spinti. Come posso eliminare gli ultimi commit sia nei miei repository locali che remoti?
EDIT: Quando lo faccio git rebase -i origin/master~4 master
, mantieni il primo come pick
, imposta gli altri tre come squash
, quindi esci (tramite cx cc in emacs), ottengo:
$ 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
dove 2f40 è il pick
commit. E ora nessuno dei 4 commit appare git log
. Mi aspettavo che il mio editor fosse riavviato in modo da poter inserire un messaggio di commit. Che cosa sto facendo di sbagliato?
git push --force origin master