Mudando Meu Editor Git On The Fly

Eu amo usar Sublime Text como fazem muitos desenvolvedores hoje em dia, mas eu simplesmente não posso usá-lo regularmente para mensagens git commit.

Quando aprendi git 4 anos atrás, sempre usei o editor padrão – vim. Eu particularmente não gosto de usar o vim, mas é o editor de linha de comando que conheço melhor. Durante muito tempo eu iria escrever em linha cometer mensagens, ou seja: git commit -m "hello world".

Então um dia algo louco aconteceu …

CapturFiles_2.png

Desde então, cerca de 1 ano atrás, meu fluxo de trabalho de commit padrão se tornou o seguinte

  • git commit
  • (inicia o vim)
  • tipo i
  • escrever mensagem de confirmação incrível
  • tipo esc + :wq

Nada de especial nisso, mas esse fluxo de trabalho está tão arraigado em minha memória muscular que não consigo desligá-lo. Então qual é o problema? Rebasing commits. Digamos que meu objetivo seja esmagar 10 commits – incluindo merges, isso envolve editar várias linhas de uma vez da mesma maneira.

No repositório principal do Zen Audio Player , eu corri . Este é o fluxo de trabalho de que preciso para qualquer um dos editores.git rebase -i HEAD~10

In vim

CapturFiles.png

  • j para descer uma linha, pule o primeiro commit
  • xxxx para excluir os 4 caracteres em pick
  • i para começar a inserir texto
  • s(squash) ou f(conserto)
  • esc
  • Repita as 4 etapas anteriores várias vezes. Na verdade, mais 48 vezes, já que 50 commits estão envolvidos neste rebase!

Tempo de conclusão estimado: 5 minutos

Probabilidade de cometer um erro: 50%

Em sublime

CapturFiles_1.png

  • Pressione a tecla para baixo
  • Use para selecionar as outras 49 ocorrências da palavracmd + dpick
  • digite s(squash) ou f(fixup) para alterar todas as instâncias
  • cmd + s salvar

Tempo de conclusão estimado: 15 segundos

Probabilidade de cometer um erro: 1%

Então, qual é a solução?

Em caso de dúvida, crie um alias ou função bash!
Como esses são os únicos 2 editores, codifiquei duas funções bash que irão mudar instantaneamente meu editor git.

Mudar para sublime

gitsubl() {
git config
--global core.editor "subl -n -w"
}

Mudar para vim

gitvim() {
git config
--global core.editor "vim"
}

Agora, sempre que preciso fazer alguma rebase:

  • corre gitsubl
  • rebase fora …
  • corra gitvimpara voltar ao normal