Questão nº 63

Questão de Tecnologia da Informação · FGV TCE-SP 2023 (nº 63)

FGV2023Agente da Fiscalização - TITecnologia da Informação
Gabarito: Dver comentário ↓

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:

Resposta comentada

Gabarito Alternativa D

Git merge strategies são diferentes formas de combinar o histórico de commits de um branch (ramo) em outro, definindo como o histórico final será registrado.

(A) Incorreta: Um merge commit cria um novo commit que possui múltiplos pais (geralmente dois), registrando explicitamente a operação de merge. O hash do último commit do branch de destino seria o hash deste novo merge commit, e não o hash do último commit do branch de origem.
(B) Incorreta: Three-way merge é o algoritmo que o Git usa para combinar o conteúdo de arquivos quando há divergência entre os branches e um ancestral comum. Não é uma estratégia de merge no sentido de como o histórico de commits é representado (como fast-forward ou merge commit).
(C) Incorreta: Squash and merge combina todos os commits do branch de origem em um único novo commit no branch de destino. Isso não preserva a quantidade original de commits do branch de origem e o hash do último commit do destino seria o hash deste novo commit "squashed", não o hash do último commit original do branch de origem.
(D) Correta: Uma fast-forward merge ocorre quando o branch de destino é um ancestral direto do branch de origem (ou seja, o branch de destino não tem commits novos desde que o branch de origem foi criado ou atualizado a partir dele). Neste caso, o Git simplesmente move o ponteiro do branch de destino para o último commit do branch de origem. Assim, o hash do último commit do branch de destino torna-se idêntico ao hash do último commit do branch de origem. Esta estratégia preserva a linearidade do histórico (não cria um merge commit) e a quantidade de commits do branch de origem. A exigência de que o branch de origem esteja "atualizado em relação ao destino" (ou seja, que o destino seja um ancestral do origem) é a condição para que um fast-forward seja possível.
(E) Incorreta: Semi-linear merge commit não é uma estratégia de merge padrão do Git. Pode se referir a um fluxo de trabalho específico que envolve rebase antes de um merge commit, mas não é um termo oficial e não se alinha com a descrição de identidade de hash.

Fonte: FGV TCE-SP 2023 Agente da Fiscalização - TI (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho