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.

Anúncios

O que tu achas?

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s