Questão de Engenharia de Software — Git — INSTITUTO AOCP 2024
Engenharia de Software›Git
Código
qa631589
Banca
INSTITUTO AOCP
Órgão
TRF 2
Ano
2024
Cargo
TJ TRF2
Em relação ao funcionamento interno e comandos avançados do Git, assinale a alternativa correta.
AO comando “git rebase” cria um novo “commit” que representa a combinação de dois “commits” anteriores.
BO Git utiliza uma estrutura de dados chamada hash SHA-1 para armazenar o histórico do repositório.
CO comando “git cherry-pick” aplica mudanças de um “commit” específico de um “branch” para outro “branch”.
DA estratégia de mesclagem “octopus” no Git é utilizada para resolver conflitos durante uma mesclagem de três vias (three-way merge).
EO comando “git bisect” é usado para aplicar uma sequência de “commits” a partir de um “branch” em outro “branch”.
Revelar gabarito e comentário▾
GabaritoC — O comando “git cherry-pick” aplica mudanças de um “commit” específico de um “branch” para outro “branch”.
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”.
Git: comandos avançados e funcionamento interno
Gabarito: letra C. O comando git cherry-pick é exatamente o que a alternativa descreve: ele aplica as mudanças introduzidas por um commit específico em outro branch, sem mesclar o histórico completo do branch de origem. As demais alternativas trocam as funções de comandos distintos do Git, e é essa distinção que vamos explorar a fundo.
O Git é um sistema de controle de versão distribuído que trata os dados como um conjunto de imagens (snapshots) do sistema de arquivos. Cada commit — uma alteração consolidada no projeto — recebe um ID exclusivo de 40 caracteres, gerado por uma soma de verificação SHA-1. Essa é a base do funcionamento interno do Git: a integridade dos dados é garantida por esses checksums, e o histórico do repositório é construído a partir desses commits encadeados.
Quando falamos em integrar o trabalho de diferentes branches, o Git oferece duas famílias de comandos: os que mesclam históricos (merge) e os que reescrevem o histórico (rebase). O git merge cria um novo commit de mesclagem que une duas linhas de desenvolvimento, preservando o histórico de ambos os branches. Já o git rebase reaplica os commits de um branch sobre a ponta de outro, reescrevendo o histórico — o que é perigoso se os commits já foram publicados, pois quebra o repositório de quem já os baixou.
O git cherry-pick é uma terceira via: ele não mescla branches inteiros nem reescreve históricos. Ele copia um commit específico de um branch e o aplica em outro, como se você estivesse "colhendo" uma cereja de uma árvore e plantando em outra. Isso é útil quando você quer trazer uma correção pontual de um branch de desenvolvimento para o branch principal, sem trazer todos os outros commits daquele branch.
Outros comandos avançados completam o arsenal: o git bisect faz uma busca binária no histórico para encontrar o commit que introduziu um bug, e a estratégia de mesclagem "octopus" é usada para mesclar mais de dois branches ao mesmo tempo — não para resolver conflitos de three-way merge, que é o papel das estratégias "recursive" ou "ort".
A pegadinha desta questão é justamente a confusão entre comandos que parecem similares: cherry-pick (aplicar um commit específico), rebase (reaplicar uma sequência de commits) e merge (combinar históricos). Guarde essa fronteira: é exatamente nela que as alternativas se dividem.
Comando
Função principal
Efeito no histórico
git merge
Combina dois branches
Cria um novo commit de mesclagem, preservando o histórico de ambos
git rebase
Reaplica commits de um branch sobre a ponta de outro
Reescreve o histórico (perigoso se já publicado)
git cherry-pick
Aplica um commit específico de um branch em outro
Cria um novo commit com as alterações copiadas, sem mesclar históricos
git bisect
Busca binária para encontrar o commit que introduziu um bug
Não altera o histórico; apenas percorre commits
Estratégia "octopus"
Mescla mais de dois branches simultaneamente
Cria um commit de mesclagem múltipla
Git: comandos de integração: Merge (Combina históricos, Cria commit de mesclagem); Rebase (Reaplica commits sobre outra base, Reescreve o histórico); Cherry-pick (Copia um commit específico, Aplica em outro branch); Bisect (Busca binária por bug); Octopus (Mescla múltiplos branches)
Alternativa A — ❌ Incorreta
A alternativa descreve o git merge, não o git rebase. O git rebase não cria um novo commit que combina dois anteriores; ele reaplica os commits de um branch sobre a base de outro, reescrevendo o histórico. O comando que cria um commit de mesclagem representando a combinação de dois históricos é o git merge.
Alternativa B — ❌ Incorreta
A alternativa está parcialmente correta, mas erra o algoritmo: o Git usa SHA-1 para gerar os checksums que identificam cada commit, mas a estrutura de dados que armazena o histórico não é o hash em si — é um grafo acíclico dirigido (DAG) de commits, onde cada commit aponta para seu(s) pai(s). O SHA-1 é o identificador, não a estrutura de armazenamento.
Alternativa C — ✅ Correta ⟵ GABARITO
Exatamente. O git cherry-pick aplica as mudanças de um commit específico de um branch para outro branch. Ele copia o commit selecionado e o aplica no branch atual, criando um novo commit com as mesmas alterações. É a ferramenta ideal para trazer correções pontuais entre branches sem mesclar históricos completos.
Alternativa D — ❌ Incorreta
A estratégia "octopus" é usada para mesclar mais de dois branches simultaneamente, não para resolver conflitos em um three-way merge. Conflitos em mesclagens de três vias são resolvidos pelas estratégias "recursive" (padrão) ou "ort", que combinam dois branches com um ancestral comum.
Alternativa E — ❌ Incorreta
O git bisect é usado para encontrar o commit que introduziu um bug, fazendo uma busca binária no histórico. Aplicar uma sequência de commits de um branch em outro é função do git rebase (ou do git merge, se você quiser preservar o histórico).
NÃO CAIA NESSA!
A banca troca as funções de comandos que parecem similares: cherry-pick (aplicar um commit específico), rebase (reaplicar uma sequência de commits) e merge (combinar históricos). O candidato que não domina a diferença entre eles cai na alternativa A ou E. Com treino, você enxerga essas trocas de longe 💪
PEGA ESSA DICA!
Para fixar, monte uma tabela mental: merge = combina históricos; rebase = reescreve histórico; cherry-pick = copia um commit específico; bisect = busca binária de bug; octopus = mescla múltiplos branches. Essa distinção é clássica em provas de Git.