Atualizando um branch com git rebase
O comando git rebase
pode ser usado para fazer vários ajustes de histórico, desde reescrever a árvore de commits, reescrevendo assim o histórico, até mesmo empurrar commits para um ponto mais a frente como se o branch fosse criado no futuro.
Nessa colinha vou te mostrar como usar git rebase
pra atualizar um branch.
Criando um histórico de exemplo
Suponha que você tem um projeto e estava trabalhando numa tarefa no branch tarefa-2
, enquanto isso outra pessoa estava trabalhando no branch tarefa-1
que foi feito o merge para o main
e assim tornando o branch main
mais atualizado como mostrado no desenho abaixo:
Similarmente, o grafo do histórico deverá se mostrar como a imagem abaixo:
Sabendo que o main
está mais atualizado que o seu branch tarefa-2
e seguindo a boa prática de trabalhar sempre com o projeto mais atualizado, você decide que é hora de atualizar o seu branch de trabalho, que tem o histórico corrente assim:
Atualizando o branch atual
Existem algumas formas de atualizar o branch atual, uma delas é usando o git merge
e fazendo o merge do branch mais atualizado, nesse caso o main
, no branch que você quer atualizar nesse caso o tarefa-2
. A outra forma é usando o rebase que vou te mostrar agora.
Tem duas formas de usar o rebase para fazer essa atualização, vamos ver a primeira que é estando no branch que você quer atualizar, então você precisa ir pro branch a ser atualizado, nesse caso o tarefa-2
e usar o rebase indicando o branch de origem das mudanças:
git checkout tarefa-2
git rebase main
Ao executar esses comandos você verá no seu terminal a mensagem avisando que a atualização foi feita com sucesso “Successfully rebased and updated refs/heads/tarefa-2.” (ou “Rebase e atualização das refs/heads/tarefa-2 bem sucedida.” em tradução livre) como você pode ver na imagem a seguir:
A segunda forma é independente do branch corrente, esse formato é um atalho para os dois comandos anteriores, basta usar o rebase, passar o branch de origem das mudanças seguido do branch de destino:
git rebase main tarefa-2
Esse comando também deverá mostrar a mesma mensagem da imagem anterior. Independentemente da forma escolhida para usar o rebase, o seu histórico deverá ser algo semelhante ao desenho abaixo:
E o grafo de histórico deverá se mostrar assim:
Conclusão
Para finalizar temos uma coisa importante de notar agora que nosso branch está atualizado: o rebase só acontecerá sem interrupções, como mostrado nessa colinha, caso não existam conflitos, caso contrário o rebase será suspendido e os conflitos devem ser resolvidos antes de continuar.
Agora você sabe atualizar um branch usando o rebase, caso queira mais detalhes sobre o comando git rebase
, recomendo a leitura da documentação do mesmo em português.
Abaixo você pode ver uma ficha que pode te ajudar a lembrar do comando git rebase
para atualizar um branch: