Questão de Engenharia de Software — Git — CESPE / CEBRASPE 2024
Engenharia de Software›Git
Código
ce403894
Banca
CESPE / CEBRASPE
Órgão
STJ
Ano
2024
Cargo
AJ
Julgue os itens a seguir, em relação a práticas DevOps, CD (continuous delivery) e CI (continuous integration).
Em um processo de merge de códigos de duas branches, é possível que apareçam conflitos, os quais podem ser resolvidos manualmente pelos desenvolvedores.
CCerto
EErrado
Revelar gabarito e comentário▾
GabaritoC — Certo
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Merge de branches e resolução de conflitos no Git
Gabarito: Certo (C). A afirmativa está correta: ao mesclar (merge) duas branches, o Git pode encontrar conflitos quando as mesmas linhas de código foram alteradas de formas diferentes nas duas ramificações, e esses conflitos podem — e normalmente devem — ser resolvidos manualmente pelos desenvolvedores, que escolhem qual versão manter ou como combinar as alterações. Essa é uma prática fundamental do controle de versão, diretamente ligada à Integração Contínua (CI), pois a resolução de conflitos é parte do processo de integrar o código de diferentes desenvolvedores.
O Git é uma ferramenta de controle de versão distribuído que permite que vários desenvolvedores trabalhem em paralelo em diferentes branches (ramificações) do mesmo projeto. Quando o trabalho em uma branch precisa ser incorporado a outra, utiliza-se o comando git merge. O Git tenta combinar automaticamente as alterações, mas quando as mesmas linhas de código foram modificadas de maneiras diferentes nas duas branches, ele não consegue decidir sozinho qual versão é a correta — é exatamente nesse ponto que surge o conflito de merge.
O conflito não é um erro do sistema, mas sim uma situação esperada e gerenciável. O Git marca os arquivos conflitantes com marcadores especiais (como <<<<<<<, ======= e >>>>>>>) que delimitam as versões em conflito, e o desenvolvedor precisa editar o arquivo manualmente para resolver a divergência. Essa resolução manual é uma etapa crítica: o desenvolvedor deve analisar o contexto das alterações, decidir se mantém uma das versões, se combina trechos de ambas, ou se escreve uma solução completamente nova. Após editar, ele adiciona o arquivo à área de staging e finaliza o merge com um commit.
A resolução de conflitos é uma habilidade essencial em ambientes que adotam Integração Contínua (CI), pois a CI depende de integrar frequentemente o código de todos os desenvolvedores em um repositório central. Quanto mais frequente for a integração, menores tendem a ser os conflitos, mas eles ainda podem ocorrer. A prática de resolver conflitos manualmente é, portanto, parte integrante do fluxo de trabalho de qualquer equipe que use Git, e a afirmativa da questão reflete exatamente essa realidade.
A pegadinha desta questão é sutil: o candidato pode achar que, por ser uma ferramenta automatizada, o Git resolveria todos os conflitos sozinho. No entanto, a automação do Git cobre apenas os casos em que as alterações não se sobrepõem; quando há sobreposição, a decisão final é sempre humana. A banca explora essa confusão entre o que é automatizado e o que exige intervenção manual.
NÃO CAIA NESSA!
A banca explora a falsa ideia de que o Git, por ser automatizado, resolveria todos os conflitos sozinho. Na verdade, a automação cobre apenas os casos em que as alterações não se sobrepõem; quando há sobreposição, a decisão final é sempre humana. O conflito é um evento esperado e a resolução manual é parte do fluxo de trabalho.
1git merge entre branches
2Git detecta sobreposição
3Conflito sinalizado
4Resolução manual pelo dev
5Commit do merge
LEVEL · soulevel.com.br
Item — ✅ Correto
A afirmativa está correta porque descreve com precisão o comportamento do Git em um merge: conflitos podem surgir quando as mesmas linhas de código são alteradas de formas diferentes nas duas branches, e a resolução é feita manualmente pelos desenvolvedores. O Git não decide sozinho qual versão manter — ele sinaliza o conflito e aguarda a decisão humana. Essa é uma prática documentada e amplamente conhecida no uso de sistemas de controle de versão, sendo essencial em fluxos de trabalho que adotam Integração Contínua (CI), onde a integração frequente de código é a norma.