
Passo 1 de 7
Definir quem recebe as mudanças
Identifique a origem, o destino e qual branch deve estar ativa para receber uma integração local.
Trilha de aprendizado · Nível 2 · Tutorial 2
Integrar uma branch de trabalho à branch de destino e conferir o resultado nos arquivos e no histórico local.
Definir quem recebe as mudanças
Identifique a origem, o destino e qual branch deve estar ativa para receber uma integração local. 2 min
Localizar as branches no histórico
Leia um grafo simples para identificar a branch atual, a ponta de cada branch e os commits compartilhados. 2 min
Executar um merge por avanço direto
Integre uma branch local a partir do destino correto e reconheça um avanço direto pela saída do Git e pelo grafo. 3 min
Reconhecer históricos divergentes
Localize o ancestral comum e os commits exclusivos de cada branch e diferencie divergência de incompatibilidade entre mudanças. 2 min
Integrar com um commit de merge
Integre históricos divergentes com uma mensagem de merge e identifique o novo commit e seus dois pais. 3 min
Conferir o resultado da integração
Valide a integração combinando evidências dos arquivos, do estado do repositório e do histórico. 3 min
Aplicar o fluxo completo e concluir
Proponha uma integração local, justifique o tipo de merge e indique as evidências que confirmam o resultado. 3 min

Passo 1 de 7
Identifique a origem, o destino e qual branch deve estar ativa para receber uma integração local.
Merge é a integração do histórico de outra branch na branch atual. Não se trata apenas de copiar arquivos: a integração considera os commits que registram as mudanças.
Antes de integrar, responda: qual branch precisa receber essas mudanças?
Associe cada termo à sua descrição.
Toque em um item e depois no par correspondente.
Exemplo
A tarefa é integrar o trabalho de correcao-texto à branch preparacao.
correcao-texto.preparacao.preparacao.Dica
O destino não precisa ser a branch principal nem ter um nome específico. Origem e destino são papéis definidos pela tarefa, não características fixas das branches.
Você está em ajuste-menu. A tarefa é integrar o histórico dessa branch à branch revisao. O repositório também tem uma branch chamada principal.
Qual decisão corresponde à tarefa?

Passo 2 de 7
Leia um grafo simples para identificar a branch atual, a ponta de cada branch e os commits compartilhados.
Antes de integrar, localize as branches no histórico com este comando. Ele apenas exibe informações; não altera o repositório.
git log --oneline --graph --all --decorateAlém do resumo de --oneline:
--graph desenha as conexões entre commits, não pastas ou arquivos.--all considera todas as referências disponíveis no repositório local do exercício, não apenas a branch atual.--decorate exibe os nomes dessas referências junto aos commits.Dica
Cada * marca um commit. O nome de uma branch aparece junto ao commit para o qual ela aponta: sua ponta. A indicação HEAD -> entrega significa que entrega é a branch atual.
* c8e4a12 (ajuste-menu) Ajusta links do menu
* b7d3f90 Adiciona menu
* a6c2e81 (HEAD -> entrega) Cria página inicial
* 95b1d70 Inicia projetoUse as marcações do grafo para encontrar cada resposta.
Toque em um item e depois no par correspondente.
* c8e4a12 (ajuste-menu) Ajusta links do menu
* b7d3f90 Adiciona menu
* a6c2e81 (HEAD -> entrega) Cria página inicial
* 95b1d70 Inicia projetoNeste grafo, siga de cada ponta para baixo:
entrega contém a6c2e81 e 95b1d70.ajuste-menu contém esses mesmos commits, mais b7d3f90 e c8e4a12.Assim, a6c2e81 e 95b1d70 são compartilhados. As duas branches apontam para posições diferentes na mesma linha de histórico; ter duas branches não exige duas linhas no desenho.
* f4a8c20 (HEAD -> revisao-texto) Revisa título
* e3b7d19 Ajusta descrição
* d2c6e08 (publicacao) Cria apresentação
* c1d5f97 Inicia projetoQuais commits já fazem parte do histórico tanto de publicacao quanto de revisao-texto?

Passo 3 de 7
Integre uma branch local a partir do destino correto e reconheça um avanço direto pela saída do Git e pelo grafo.
Neste exemplo, as branches já existem. Você está em ajuste-guia, com o trabalho commitado, e deve integrá-la em entrega.
O destino entrega aponta para um commit anterior da mesma linha: ele é ancestral da ponta da origem e não tem commits exclusivos.
* 92b6f03 (HEAD -> ajuste-guia) Adicionar exemplo ao guia
* 61cd208 Descrever instalação
* 3a7f920 (entrega) Criar guia inicialDica
Execute um comando por vez. O primeiro git status deve indicar ausência de pendências. Após a troca, o segundo deve confirmar que entrega está ativa e continua sem pendências. Se houver trabalho não registrado, pare e registre-o na branch apropriada antes de continuar.
Ative o destino com git switch e informe a origem no git merge.
git status
git switch entrega
git status
git merge ajuste-guiaVocê está em ajuste-guia, com o trabalho já commitado. Ordene as ações para integrar essa branch em entrega.
Neste exemplo, o Git informa:
Updating 3a7f920..92b6f03
Fast-forwardFast-forward significa avanço direto. Como entrega já estava na mesma linha de histórico, o Git apenas move sua referência de 3a7f920 até 92b6f03, que já existia na origem.
No grafo abaixo, os três commits são os mesmos de antes. O que mudou foi a posição de entrega, que continua sendo a branch atual.
git log --oneline --graph --all --decorate* 92b6f03 (HEAD -> entrega, ajuste-guia) Adicionar exemplo ao guia
* 61cd208 Descrever instalação
* 3a7f920 Criar guia inicialExplique com suas palavras por que a integração de ajuste-guia em entrega pôde ocorrer por avanço direto. Diga também de onde e para onde a referência entrega se moveu.
Escreva pelo menos 30 caracteres (0/30).

Passo 4 de 7
Localize o ancestral comum e os commits exclusivos de cada branch e diferencie divergência de incompatibilidade entre mudanças.
O commit compartilhado de onde duas linhas de trabalho partiram é o ancestral comum.
Se, depois dele, cada branch ganhou commits que não fazem parte do histórico da outra, os históricos divergiram. Há commits exclusivos tanto no destino quanto na origem.
Dica
Mover apenas a referência do destino para a ponta da origem deixaria os commits exclusivos do destino fora do histórico dessa branch. A integração precisa preservar as duas linhas de trabalho.
Considere este grafo ilustrativo. A branch de destino é entrega; a origem é ajuste-contato.
* b2c3d4e (HEAD -> entrega) Corrige descrição no README.md
| * c3d4e5f (ajuste-contato) Atualiza horário em contato.md
|/
* a1b2c3d Cria README.md e contato.mdQual é o ancestral comum? Qual commit é exclusivo de cada branch? Explique por que entrega não pode simplesmente avançar para a ponta de ajuste-contato.
Escreva pelo menos 30 caracteres (0/30).
No ancestral comum do exemplo, README.md e contato.md já existiam. Depois dele, ocorreram apenas estas alterações:
Exemplo
Não houve exclusões, renomeações nem outras mudanças.
Nesse cenário, Git consegue combinar as alterações automaticamente: manter a descrição corrigida e incorporar o novo horário.
Divergência de histórico não significa, por si só, falha na integração automática. Aqui, as mudanças são compatíveis.
No cenário apresentado, a ausência de avanço direto impede Git de combinar automaticamente a correção em README.md com a atualização em contato.md.

Passo 5 de 7
Integre históricos divergentes com uma mensagem de merge e identifique o novo commit e seus dois pais.
Considere um repositório de prática já preparado:
site é o destino e tem um commit exclusivo que altera README.md.menu é a origem e tem um commit exclusivo que altera menu.html.Execute uma linha por vez. Só prossiga se cada git status indicar ausência de pendências. Após a troca, confirme também que a branch atual é site.
git status
git switch site
git status
git merge menu -m "Integrar menu em site"Nesse cenário divergente, o Git combina as mudanças e cria automaticamente um commit de merge. A opção -m fornece a mensagem desse commit no próprio comando, sem depender do editor. A mensagem escolhida deixa claro o que foi integrado e em qual destino.
Atenção
Se o Git informar um conflito, a integração não está concluída. Não tente forçá-la nem siga como se o commit de merge já tivesse sido criado. A resolução será abordada no próximo tutorial.
Você está em site, sem pendências, pronto para integrar menu. Complete a opção que fornece a mensagem do commit de merge sem abrir o editor:
git merge menu ____ "Integrar menu em site"
O commit de merge passa a ser a ponta de site. Neste merge entre duas branches, ele tem dois pais, ou seja, dois commits anteriores aos quais se conecta diretamente:
site antes da integração.menu que foi integrada.Assim, o novo commit registra a união sem substituir os commits anteriores de nenhuma das duas linhas.
Após a integração bem-sucedida, execute:
git log --oneline --graph --all --decorateDica
No grafo, procure o novo commit com duas conexões para o histórico anterior. Não se baseie apenas na mensagem: são essas ligações que mostram os dois pais e a união das linhas.
Este é um resultado ilustrativo do cenário. Os identificadores serão diferentes no seu repositório.
* d4e5f6a (HEAD -> site) Integrar menu em site
|\
| * c3d4e5f (menu) Adicionar link ao menu
* | b2c3d4e Atualizar instruções do site
|/
* a1b2c3d Estrutura inicialIdentifique o commit de merge e seus dois pais, indicando qual era a ponta do destino e qual era a ponta da origem. Depois, explique por que esse resultado não é um avanço direto.
Escreva pelo menos 30 caracteres (0/30).

Passo 6 de 7
Valide a integração combinando evidências dos arquivos, do estado do repositório e do histórico.
Neste exemplo, o merge de ajuste-menu em entrega terminou sem conflitos. Permaneça em entrega e abra os arquivos: confira tanto as novidades quanto o conteúdo que deveria permanecer.
Exemplo
menu.txt: manter as opções “Início” e “Ajuda” e incluir “Contato”, adicionada pela origem.README.md: manter o título “Portal de estudos”, atualizado no destino antes do merge.git status
git diffgit status sem pendências confirma um estado limpo, não a correção do conteúdo. Já git diff vazio indica ausência de diferenças entre os arquivos rastreados no diretório de trabalho e a área de preparação. Ele não compara o projeto antes e depois do merge.
Após o merge, você consultou apenas os comandos: git status informa que não há pendências e git diff não mostra nada. Qual conclusão é justificada?
Antes do merge, ajuste-menu apontava para 6a3d920. Consulte o histórico e siga as conexões a partir de entrega: não basta encontrar o nome da origem na saída de --all.
git log --oneline --graph --all --decorate* c8e4a10 (HEAD -> entrega) Integra ajuste-menu
|\
| * 6a3d920 (ajuste-menu) Adiciona Contato ao menu
* | b7d1c42 Atualiza título do projeto
|/
* 1f2a3b4 Cria arquivos iniciaisHEAD -> entrega está no commit de merge, conectado às duas linhas anteriores. Assim, o histórico da origem está incorporado ao destino.
ajuste-menu continua em 6a3d920: o merge no destino não move nem exclui a branch de origem. No avanço direto, os dois nomes podem ficar no mesmo commit porque o destino avança até a origem.
O histórico confirma a integração em entrega e o status está limpo. Ao abrir os arquivos, você encontra:
menu.txt: apenas “Início” e “Contato”; a opção “Ajuda”, que deveria permanecer, sumiu.README.md: título “Portal de estudos” preservado.Você aprovaria o resultado? Justifique usando as evidências.
Escreva pelo menos 30 caracteres (0/30).

Passo 7 de 7
Proponha uma integração local, justifique o tipo de merge e indique as evidências que confirmam o resultado.
A versão que será revisada está na branch revisao. Ela deve receber as mudanças de prazo-entrega.
Neste caso simulado, todo o trabalho já está commitado e não há pendências. Desde a base comum:
revisao alterou apenas README.md, incluindo Canal de suporte: e-mail.prazo-entrega alterou apenas entrega.txt, incluindo Prazo: 5 dias úteis.Os dois arquivos já existiam. Seus demais conteúdos devem ser preservados.
Saída ilustrativa de git log --oneline --graph --all --decorate:
* 7c2e9a1 (HEAD -> prazo-entrega) Inclui prazo em entrega.txt
| * 4b8d6f0 (revisao) Inclui canal de suporte no README
|/
* 1a3c5e7 Base do projetoCom origem e destino definidos, coloque as etapas em ordem.
Sem precisar recriar o repositório, escreva:
git status e no histórico para confirmar o resultado.Descreva resultados esperados; não é necessário afirmar que executou os comandos.
Resumo
Atenção
Não considere a integração concluída nem tente forçá-la. A resolução será praticada no próximo tutorial.
Parabéns! Você concluiu: Integrar branches locais com merge
Milhares de cursos online em vídeo, ebooks e áudiobooks.
Para testar seus conhecimentos no decorrer dos cursos online
Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail
Baixe nosso aplicativo pelo QR Code ou pelos links abaixo:.
+ de 10 milhões
de alunos
Certificado grátis e
válido em todo o Brasil
60 mil exercícios
gratuitos
4,8/5 classificação
nas lojas de apps
Cursos gratuitos em
vídeo, ebooks e audiobooks