No Git com o poder do rebase
nós podemos realizar merge com vários commits em apenas um! Facilitando muito a nossa vida quando temos muitos commits e precisamos encaminhar isso a outros ambientes.
Segundo a documentação oficial o comando git-rebase
é um dos comandos especializados em integrar alterações em uma branch para outra e possui um capacidade poderoso de reescrita de histórico..
Inicialize uma sessão para o rebase: git rebase --interactive HEAD~N
Logo após o HEAD temos o N
que é referente ao número de commits que você deseja agrupar a partir do último, do mais recente.
Vou exemplificar abaixo uma lista imaginária de commits, utilizando dois módulos: bar e foo
, você também pode buscar a sua lista executando o comando git log
.
12a3fs finalizacao modulo --- commit mais recente 5d22oc alteracoes no modulo 8b3sac altera deploy a29m70 adiciona camada layout 3294qa adiciona novo modulo --- commit mais antigo
Esse é um exemplo básico, utilizando o N como 5
, agrupando os últimos 5 commits a partir do mais recente:
12a3fs finaliza modulo foo --- mais recente -┐ 5d22oc altera no modulo foo | 8b3sac altera deploy foo | -- agrupar todos em apenas 1 c1v021 add layout modulo foo | a29m70 add novo modulo foo ------------------┘ 3294qa entrega modulo bar --- mais antigo
Com isso teremos:
12a3fs ajustes finais modulo foo --- novo commit (gerado pelo rebase) 3294qa entrega modulo bar --- mais antigo
Esse foi o comando executado para chegar nesse resultado:
git rebase --interactive HEAD~[5]
Ao executar o comando anterior você deve ter caído em modo de edição que exibe os commits na forma inversa apresentada no passo anterior.
Aqui vocês pode definir se o commit é pick ou squash:
pick 3294qa entrega modulo bar --- mais antigo pick a29m70 add novo modulo foo pick c1v021 add layout modulo foo pick 8b3sac altera deploy foo pick 5d22oc altera no modulo foo pick 12a3fs finaliza modulo foo pick 12a3fs ajustes finais modulo foo --- novo commit (gerado pelo rebase)
Agora o nosso objetivo é marcar os commits que queremos agrupar como squashable
, você pode ver mais a respeito na documentação da reescrita de histórico.
Você pode utilizar o comando s
ao invés de squash
para facilitar:
pick 3294qa entrega modulo bar --- mais antigo s a29m70 add novo modulo foo s c1v021 add layout modulo foo s 8b3sac altera deploy foo s 5d22oc altera no modulo foo s 12a3fs finaliza modulo foo s 12a3fs ajustes finais modulo foo --- novo commit (gerado pelo rebase)
Segundo passo concluído! Salve as alterações e saia do modo de edição
Após realizar o agrupamento agora é a hora de "commitarmos" o agrupamento, definindo um nome.
Você deve ter sido redirecionado justamente para essa sessão, onde constam as descrições de cada commit agrupado, você pode apagar todas essas linhas e definir apenas um nome para todo esse esforço.
add novo modulo foo add layout modulo foo altera deploy foo altera no modulo foo finaliza modulo foo ajustes finais modulo foo
Alterando para o nome que for mais coerente, exemplo:
entrega modulo foo
Resumindo é outra prática muito recomendada para condensar vários trabalhos em um só.
Espero que esse artigo ajude você a organizar melhor o seu trabalho.
Dúvidas, reclamações ou sugestões podem ser feitas através das redes sociais.
Obrigado!
Voltar