Questão nº 47

Questão de Tecnologia da Informação · FGV TRF1 2024 (nº 47)

FGV2024Técnico Judiciário - Desenvolvimento de SistemasTecnologia da Informação
Gabarito: Ever comentário ↓

Para realizar o clone de um único branch de um repositório git, a
analista Ana utilizou o comando ‘git clone --depth 1 --branch q07
https://trf1.br/ana/repo07.git’.
Após concluir o trabalho necessário no branch q07, Ana precisou
recuperar o histórico completo de commits e realizar o checkout
para o branch master, sem efetuar um novo clone.
Para realizar as operações necessárias, a analista:

Resposta comentada

Gabarito Alternativa E

Um clone raso (git clone --depth N) é uma cópia parcial de um repositório Git que contém apenas os últimos N commits de um branch, economizando espaço e tempo. Para acessar o histórico completo e outros branches, é preciso "aprofundar" o clone (fazer um unshallow) e garantir que o Git busque todos os branches.

  • (A) Incorreta: git checkout master falharia porque o clone raso inicial (--branch q07) não trouxe o histórico completo do branch master (ou de qualquer outro branch que não seja q07). O Git não teria os commits necessários para construir o branch master localmente.
  • (B) Incorreta: Alterar o escopo do fetch (git config remote.origin.fetch) é necessário para que futuros fetches tragam todos os branches, mas isso não remove a limitação de profundidade do clone raso existente. O histórico ainda estaria truncado até que o unshallow fosse feito. Esta é a armadilha: parece uma parte da solução, mas é incompleta e ignora a natureza "rasa" do clone.
  • (C) Incorreta: O comando git checkout não possui o argumento --unshallow. O argumento --unshallow é usado com git fetch para converter um clone raso em um clone completo.
  • (D) Incorreta: git fetch --all buscaria todos os branches remotos, mas, como o clone é raso, ele ainda estaria limitado à profundidade inicial. Ele não traria o histórico completo de todos os branches, apenas os commits dentro da profundidade já estabelecida ou os mais recentes. O unshallow é a operação que remove a restrição de profundidade.
  • (E) Correta: Primeiro, git fetch --unshallow (ou git unshallow, que é um alias para fetch --unshallow em algumas versões) converte o clone raso em um clone completo, baixando todo o histórico que faltava. Em seguida, alterar o escopo do fetch (git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*") garante que o Git buscará todos os branches remotos (não apenas q07) em operações futuras. Um novo git fetch é então necessário para baixar os dados dos outros branches (como master) que agora podem ser buscados em sua totalidade. Finalmente, git checkout master pode ser executado com sucesso, pois o histórico completo de master estará disponível localmente.

Fonte: FGV TRF1 2024 Técnico Judiciário - Desenvolvimento de Sistemas (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