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 …
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
j
para descer uma linha, pule o primeiro commitxxxx
para excluir os 4 caracteres empick
i
para começar a inserir textos
(squash) ouf
(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
- Pressione a tecla para baixo
- Use para selecionar as outras 49 ocorrências da palavra
cmd + d
pick
- digite
s
(squash) ouf
(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
gitvim
para voltar ao normal