Questão de Engenharia de Software — Git — INSTITUTO AOCP 2024
- Código
- qa631579
- Banca
- INSTITUTO AOCP
- Órgão
- DPE MS
- Ano
- 2024
- Cargo
- Ana Def ( )
- Agit init
- Bgit fetch
- Cgit status
- Dgit checkout
- Egit fsck
GabaritoB — git fetch
Gabarito: letra B. O comando git fetch é o que Maisa deve utilizar para obter todos os objetos do repositório remoto que ainda não existem no diretório de trabalho local. Ele baixa as referências e os objetos (commits, árvores, blobs) do repositório remoto para o repositório local, sem alterar o diretório de trabalho nem o branch atual — é a operação de "baixar" o que há de novo no remoto sem integrar ao trabalho em andamento.
O Git é um sistema de controle de versão distribuído, o que significa que cada clone contém uma cópia completa do repositório, incluindo todo o histórico. Quando você trabalha com um repositório remoto (como GitHub, GitLab ou Bitbucket), precisa sincronizar seu repositório local com o remoto. Essa sincronização envolve dois movimentos: baixar (fetch/pull) e enviar (push). O comando git fetch realiza o primeiro movimento de forma segura: ele atualiza as referências remotas (como origin/main) e baixa os objetos que faltam, mas não modifica o diretório de trabalho nem o branch atual. Isso permite que você examine as mudanças antes de integrá-las com git merge ou git rebase.
A distinção crucial é entre git fetch e git pull. Enquanto git fetch apenas baixa os objetos e atualiza as referências remotas, git pull é um atalho que executa git fetch seguido de git merge (ou git rebase, dependendo da configuração), integrando imediatamente as mudanças ao branch atual. Se Maisa quer apenas "obter todos os objetos do repositório remoto que atualmente não residem no diretório de trabalho local", sem necessariamente integrá-los ao seu trabalho atual, git fetch é o comando correto. Se ela quisesse baixar e integrar imediatamente, usaria git pull.
Vamos analisar cada alternativa para entender por que as outras não atendem à necessidade descrita:
git init cria um novo repositório Git no diretório atual. Ele não interage com repositórios remotos e não baixa nenhum objeto. É o comando usado para iniciar o versionamento de um projeto local, não para sincronizar com um repositório remoto.
git fetch baixa os objetos e referências do repositório remoto que não existem no repositório local, atualizando as referências remotas (como origin/main) sem alterar o diretório de trabalho. É exatamente o que Maisa precisa: obter todos os objetos do remoto que ainda não estão no diretório de trabalho local. O comando não integra as mudanças ao branch atual, permitindo que ela revise antes de mesclar.
git status exibe o estado do diretório de trabalho e da área de preparo (staging area), mostrando arquivos modificados, não rastreados e prontos para commit. Ele não baixa nada do repositório remoto; é um comando de consulta local que informa o estado atual do projeto.
git checkout é usado para alternar entre branches, restaurar arquivos do histórico ou criar novos branches. Embora possa ser usado para atualizar o diretório de trabalho com arquivos de um commit específico, ele não baixa objetos do repositório remoto. Para obter objetos do remoto, seria necessário primeiro executar git fetch e depois, opcionalmente, git checkout para atualizar o diretório de trabalho com base nas referências baixadas.
git fsck verifica a integridade do banco de dados de objetos do Git, procurando objetos corrompidos ou desconectados. É uma ferramenta de manutenção e diagnóstico, não um comando de sincronização com o repositório remoto. Não baixa nenhum objeto do remoto.
A banca explora a confusão entre git fetch e git pull. O enunciado diz "obter todos os objetos do repositório remoto que atualmente não residem no diretório de trabalho local" — isso descreve exatamente o que git fetch faz. O candidato que pensa em "atualizar o diretório de trabalho" pode ser tentado a escolher git pull, mas o comando git pull não está entre as alternativas. A pegadinha aqui é reconhecer que git fetch é o comando que baixa os objetos sem integrar, enquanto git pull (que não aparece) faria o fetch + merge. Fique atento: quando a questão fala em "obter objetos" ou "baixar referências", a resposta é git fetch; quando fala em "atualizar o diretório de trabalho" ou "integrar mudanças", a resposta seria git pull.
Para memorizar a diferença, pense: fetch = "buscar" (apenas baixa), pull = "puxar" (baixa e integra). Na prova, leia o enunciado com atenção: se ele menciona "obter objetos", "baixar referências" ou "sincronizar sem alterar o trabalho", a resposta é git fetch. Se menciona "atualizar o diretório de trabalho" ou "integrar as mudanças", a resposta seria git pull. Essa distinção é clássica em questões de Git.
Gabarito: letra B
Link permanente: /questoes/qa631579