Git merge e rebase?

Quando se está trabalhando em uma branch e outro membro do time faz um git push, você terá que fazer um git pull antes de enviar seus commits para o repositório bare. Quando isso acontece, o git gera um commit de merge. Muitos commits de merge não são informações úteis para outros desenvolvedores e podem complicar a leitura do histórico de commits.

É uma boa prática usar pull com rebase usando o comando:

git pull --rebase

Desta forma o histórico fica mais legível.

Para deixar esse processo automatizado, podemos usar a seguinte configuração:

git config --global --bool pull.rebase true

Quando estiver trabalhando em um feature branch e precisar fazer um merge para o trunk, que geralmente é o branch master, é uma boa prática usar o parâmetro –no-ff.

git merge --no-ff my-feature

Isso faz com que o git gere um commit de merge mesmo quando faz fast-forward, criando rastreabilidade, facilitando saber de onde vieram as alterações e quando o merge foi feito. Também facilita reverter funcionalidades adicionadas ao master.

A configuração abaixo deixa esse processo automatizado. Com ela, todas as vezes que você fizer merge, o git irá criar um commit de merge automaticamente.

git config --global merge.ff false

Ainda falando de features branches, quando se está trabalhando em um feature branch e precisa-se levar commits do master para ele, muitos devs usam rebase. No entanto o rebase reescreve o histórico e complica o fluxo além de ser muito mais custoso resolver conflitos quando se usa rebase. Então é melhor usar merge nesses casos.

Até a próxima minha gente.


Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *