Use blocos visuais do Vim para esmagar vários commits git

Quando rebasing interativamente com git, frequentemente precisamos esmagar uma sequência de commits em série, ou seja, alterar um conjunto de commits a partir deste:

pick f7f3f6d changed my name a bit
pick
310154e updated README formatting and added blame
pick a5f4a0d added cat
-file

para isso:

pick f7f3f6d changed my name a bit
squash
310154e updated README formatting and added blame
squash a5f4a0d added cat
-file

Quando você precisa alterar muitos commits de squash para pick, é um pouco cansativo alterá-los um por um – então, se você estiver usando o Vim, é muito mais fácil:

  • coloque o cursor no início da linha com o primeiro commit que deseja esmagar
  • entrar no modo de bloqueio visual (CTRL-V)
  • selecione todas as linhas que deseja squash
  • pressione ‘c’ e digite ‘squash’ para substituir o comando ‘pick’
  • pressione ESC para aplicar essa alteração a todas as linhas selecionadas.

Seus dedos vão agradecer por isso!