Questão de Engenharia de Software — Gerência de Configuração — FGV 2023
Engenharia de Software›Gerência de Configuração
Código
fg071497
Banca
FGV
Órgão
TCE-SP
Ano
2023
Nível
Superior
Cargo
Agente da Fiscalização - TI
A analista Jéssica administra o Gitlab do TCE SP. Jéssica atribuiu ao projeto TCEMóvel a estratégia de merge na qual, após feito o merge, o hash do último commit do branch de destino torna-se idêntico ao hash do último commit do branch de origem. A estratégia escolhida por Jéssica visa preservar a quantidade e a linearidade do histórico de commits, exigindo, porém, que o branch de origem esteja atualizado em relação ao destino para a efetuação do merge.Jéssica atribuiu para o TCEMóvel a estratégia de merge:
Amerge commit;
Bthree-way merge;
Csquash and merge;
Dfast-forward merge;
Esemi-linear merge commit.
Revelar gabarito e comentário▾
GabaritoD — fast-forward merge;
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”.
Estratégias de Merge no Git
Gabarito: letra D (fast-forward merge). A descrição do enunciado — após o merge, o hash do último commit do branch de destino torna-se idêntico ao do branch de origem, preservando a linearidade e exigindo que o branch de origem esteja atualizado — é a definição exata do fast-forward merge. Nessa estratégia, o Git simplesmente avança o ponteiro da branch de destino para o commit mais recente da origem, sem criar um commit de merge adicional.
Estratégias de merge: Fast-forward (Hash idêntico ao da origem, Histórico linear, Requer origem atualizada); Merge commit (Cria commit de merge, Histórico não linear); Squash and merge (Comprime commits em um, Altera hashes)
Alternativa A — ❌ Incorreta
Merge commit é a estratégia padrão quando as branches divergiram; ele cria um novo commit de merge com dois pais, o que quebra a linearidade. Não se aplica ao cenário descrito.
Alternativa B — ❌ Incorreta
Three-way merge é o mecanismo usado quando há divergência entre as branches, resultando em um commit de merge (não preserva a linearidade). O enunciado exige que o hash final seja idêntico, o que só ocorre no fast-forward.
Alternativa C — ❌ Incorreta
Squash and merge comprime todos os commits da branch de origem em um único commit no destino, alterando o histórico e os hashes. Não mantém a identidade do hash final, conforme requerido.
Alternativa D — ✅ Correta ⟵ GABARITO
No fast-forward merge, se a branch de destino não teve commits desde a ramificação, o Git apenas move o ponteiro para frente. O hash do destino fica igual ao da origem, o histórico permanece linear, e a condição de que a origem deve estar atualizada em relação ao destino é atendida.
Alternativa E — ❌ Incorreta
Semi-linear merge commit não é uma estratégia padrão do Git. Possivelmente refere-se a um merge com --no-ff, que força um commit de merge mesmo quando o fast-forward é possível, criando um nó extra e quebrando a linearidade desejada.
PEGA ESSA DICA!
Para identificar a estratégia de merge na prova, foque nas palavras-chave: "hash idêntico" e "linearidade" apontam para fast-forward; "commit de merge" indica merge commit ou three-way; "combina commits em um" é squash.