Conceitos-chave

Merge

O merge é o processo de combinar alterações de uma branch em outra. Isso normalmente é feito quando uma funcionalidade ou correção de bug é concluída em uma branch separada e precisa ser integrada à branch main do projeto. O merge permite juntar as alterações feitas em branches diferentes, criando uma versão unificada do projeto que incorpora todas as atualizações.

O merge é uma operação essencial no Git porque possibilita o desenvolvimento colaborativo e o trabalho paralelo em diferentes funcionalidades ou correções de bugs. Trabalhando em branches separadas, os desenvolvedores conseguem avançar de forma independente, sem interferir no progresso uns dos outros. Quando o trabalho em uma branch está concluído e testado, ela pode ser mergeada de volta na branch main, deixando as alterações disponíveis para todo mundo.

Ao realizar um merge, o Git tenta combinar automaticamente as alterações da branch de origem na branch de destino. Se as alterações não entrarem em conflito entre si (ou seja, se modificarem partes diferentes do código), o Git vai fazer um merge "fast-forward", simplesmente movendo o ponteiro da branch de destino para o commit mais recente da branch de origem.

Porém, se houver alterações conflitantes (ou seja, se as duas branches tiverem modificado as mesmas linhas de código), o Git vai parar com um conflito de merge e pedir que o usuário resolva o conflito antes de concluir o merge. Isso envolve revisar as alterações conflitantes, decidir quais manter e ajustar o código de acordo.

Exemplos

Suponha que você está trabalhando em uma aplicação web e precisa implementar uma nova funcionalidade de cadastro de usuários. Você cria uma nova branch chamada login-form-feature para trabalhar nessa funcionalidade:

Executar no terminal:
git switch -c login-form-feature

Depois de concluir a funcionalidade e testá-la com cuidado, você quer mergear as alterações de volta na branch main:

Executar no terminal:
git switch main
git merge login-form-feature

O Git vai tentar mergear as alterações da branch login-form-feature na branch main. Se não houver conflitos, o merge será concluído automaticamente.