O que é merge
Merge é a integração de uma linha de desenvolvimento em outra. No Git, o resultado depende da relação entre os históricos, das alterações existentes e das opções escolhidas para a integração.
A branch de destino é aquela que receberá o trabalho. Confira essa direção antes de executar o procedimento, pois integrar a correção na linha principal e atualizar a correção com a linha principal atendem a finalidades diferentes.
Fast-forward e histórico divergente
Quando a referência de destino está num ancestral da origem, um fast-forward pode avançá-la até o commit mais recente sem criar outro registro. Nesse caso, o histórico existente já contém o caminho necessário.
Quando as linhas avançaram separadamente, um merge comum combina suas alterações e registra a relação num commit de merge. As opções do comando podem exigir ou impedir determinadas formas de integração.
Resolver o que o Git não consegue combinar
Conflitos podem envolver trechos editados, arquivos removidos ou renomeações. O Git informa as partes que exigem resolução, e você precisa examinar a intenção de cada mudança antes de preparar o resultado.
Aceitar um lado inteiro pode apagar uma correção presente no outro. Leia o arquivo final e confira se os marcadores de conflito foram removidos, sem tratar essa remoção como comprovação de que o comportamento ficou correto.
Preservar o trabalho que já existe
Alterações locais anteriores ao merge podem dificultar a integração e sua interrupção. Consulte o status e preserve o trabalho antes de iniciar, principalmente quando os mesmos arquivos podem ser afetados.
Se a integração não puder continuar, o procedimento de cancelamento depende do estado encontrado. Não presuma que cancelar reconstruirá perfeitamente edições locais que já estavam misturadas ao processo.
Conferir o resultado integrado
Compare o resultado com os comportamentos que cada branch precisava preservar e execute os testes relevantes. Uma integração concluída informa que o Git produziu o estado solicitado, sem garantir que a aplicação atenda aos casos esperados.
O pull request pode reunir essa revisão na plataforma. Métodos como squash e rebase produzem históricos diferentes do merge comum, então confira a forma escolhida antes de concluir a proposta.
Dúvidas frequentes
Perguntas frequentes sobre Merge
- Todo merge cria um commit novo?
- Não. Um fast-forward pode apenas avançar a referência para um commit já existente. A criação de um commit de merge depende do histórico e das opções usadas.
- Conflito só acontece quando duas branches editam a mesma linha?
- Não. Exclusão contra edição, renomeações e outras combinações também podem exigir resolução. O conflito surge quando o Git não consegue produzir a integração automaticamente.
- Resolver conflito é escolher sempre um dos lados?
- Não. O resultado pode precisar combinar intenções das duas alterações ou usar uma solução diferente. A escolha deve preservar o comportamento pretendido, com revisão e testes.
- Merge concluído envia mudanças ao remoto?
- Não quando executado localmente. O envio é uma ação separada. Plataformas também podem executar a integração diretamente no repositório remoto.
Para continuar
Recursos relacionados
Documentação
Git: integração de históricos
Fast-forward, commits de merge e tratamento de conflitos.
Abrir recursoDocumentação
Pro Git: integração de branches
Exemplos de fast-forward, divergência e resolução de conflitos.
Abrir recursoAplicação na formação
Developer Workspace
O merge integra históricos de desenvolvimento e pode exigir conciliação entre alterações feitas nas branches.
Conhecer a formação
Fontes consultadas
Referências deste verbete
Este verbete ajudou você?
Obrigado pela resposta. Ela fica salva apenas neste navegador.