Git Prepush

Não tenho certeza de como todo mundo usa o git, mas no trabalho nós o usamos de uma maneira mais centralizada, assim como a subversão que migrei há algum tempo. Isso significa que, para nossas alterações, criamos um branch fora do branch master, conhecido como “branch de recurso”, fazemos nossas alterações, testamos essas alterações, fazemos uma revisão rápida por pares e, finalmente, voltamos a fundir no master; enxágue; e repita.

Como há mudanças constantemente indo para o branch master, isso significa que temos que fazer o que chamo de git prepush shuffle, que é:
1. checkout master
2. update (pull) master branch
3. checkout feature branch
4. update (rebase ) branch de recurso
5. corrigir conflitos (se houver)

Agora, o branch de recursos está pronto para enviar para o processo de revisão e, em seguida, ser mesclado no master.

Por que estou lhe contando tudo isso? Bem, eu odeio ter que digitar todas essas coisas todas as vezes. Um dia me perguntei se havia uma maneira de melhorar isso. Eu sabia que podia fazer aliases, então agora era uma questão de saber se eu poderia fazer mais de um comando dentro de um alias. Uma pequena pesquisa na Internet me levou a esta resposta StackOverflow , que mostrou que era possível.

Isso me levou ao próximo obstáculo; Eu sabia que precisava mudar para o branch master. Mas então como eu voltaria ao branch de recursos? Um pouco mais de buraco de coelho caindo me levou a esta resposta StackOverflow , que afirma que você pode voltar ao branch anterior com a @{-1}referência.

A única observação que também gostaria de acrescentar antes de mostrar o que fiz é que presumo que:

[branch]
autosetuprebase
= always

está definido. O que eu achei muito útil quando estou trabalhando em uma maneira mais centralizada com vários committers.

Minha “criação” final é esta:

Cenário

[alias]
prepush
= !git checkout master && git pull && git checkout @{-1} && git rebase master

Então, se alguém aí faz a mesma dança que eu, fique à vontade para usar esse apelido e economizar tempo e digitação.

(Esta postagem apareceu originalmente aqui .)