Git autosquash goodies

O rebase interativo é uma ferramenta poderosa, mas mais ainda é o recurso –autosquash do git 1.7.

Depois de adicionar suas alterações ao índice com git add, os seguintes aliases permitirão que você especifique um SHA curto de um commit para corrigir / squash, rebasing interativamente os commits intermediários:

fixup = !sh -c 'REV=$(git rev-parse $1) && git commit --fixup $@ && git rebase -i --autosquash $REV^' -

squash
= !sh -c 'REV=$(git rev-parse $1) && git commit --squash $@ && git rebase -i --autosquash $REV^' -

Esses dois primeiros aliases podem ser encontrados livremente na natureza, não consigo encontrar a fonte de onde os obtive e, portanto, dou os devidos créditos.

Se o objetivo é corrigir / esmagar algum trabalho até o último commit, você pode usar:

fixprev = "!f() { SHA=$(git rev-parse HEAD) && REV=$(git rev-parse $SHA) && git commit --fixup $SHA && git rebase -i --autosquash $REV^; }; f -"

sqprev
= "!f() { SHA=$(git rev-parse HEAD) && REV=$(git rev-parse $SHA) && git commit --squash $SHA && git rebase -i --autosquash $REV^; }; f -"