Pular para o conteúdo principal

Questão de Engenharia de Software — Ferramentas de Desenvolvimento de Software — INSTITUTO AOCP 2025

Engenharia de SoftwareFerramentas de Desenvolvimento de Software
Código
qg540902
Banca
INSTITUTO AOCP
Órgão
MPE-RS
Ano
2025
Nível
Médio
Cargo
Técnico do Ministério Público - Informática
O Git é um sistema de controle de versão amplamente utilizado no desenvolvimento de software, permitindo gerenciar alterações no código-fonte e colaborar em projetos de forma eficiente. Ele oferece diversos comandos para manipular o repositório local e remoto, um deles permite baixar as atualizações do repositório remoto sem realizar a mesclagem automática com o repositório local. Qual é esse comando?
  1. Agit reset
  2. Bgit rebase
  3. Cgit diff
  4. Dgit log
  5. Egit fetch
Revelar gabarito e comentário

GabaritoE — git fetch

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 de Sincronização com o Repositório Remoto

Gabarito: letra E. O comando git fetch baixa as atualizações do repositório remoto (commits, branches, tags) para o repositório local, mas não realiza a mesclagem automática com o branch de trabalho atual. Essa é a função do git pull, que combina git fetch + git merge. A questão pede exatamente o comando que baixa sem mesclar, e essa é a definição canônica do git fetch.

O Git é um sistema de controle de versão distribuído, o que significa que cada desenvolvedor tem uma cópia completa do repositório em sua máquina local. Para sincronizar com o repositório remoto (como GitHub, GitLab ou Bitbucket), o Git oferece comandos específicos. A distinção central que a banca explora aqui é entre baixar e integrar. O git fetch apenas atualiza as referências remotas no seu repositório local, criando branches como origin/main que apontam para o estado mais recente do servidor. Ele não altera seus arquivos de trabalho nem seu histórico local. Já o git pull faz o fetch e, em seguida, executa um merge (ou rebase, se configurado) para incorporar essas mudanças ao seu branch atual. É uma operação de dois passos que o Git combina por conveniência.

Imagine que você está trabalhando na branch main e um colega fez um push com novas funcionalidades. Se você executar git fetch, o Git baixará os novos commits para a branch origin/main no seu repositório local, mas seu branch main permanecerá inalterado. Seus arquivos continuarão os mesmos. Para ver as mudanças, você precisaria executar git merge origin/main ou git pull. O git fetch é útil quando você quer inspecionar as mudanças antes de integrá-las, ou quando quer atualizar branches remotas sem afetar seu trabalho atual.

A pegadinha desta questão é a confusão clássica entre git fetch e git pull. O git pull é o comando que a maioria dos desenvolvedores usa no dia a dia, pois baixa e integra em um único passo. No entanto, o enunciado especifica "sem realizar a mesclagem automática", o que elimina o git pull e aponta diretamente para o git fetch. A banca testa se o candidato conhece a diferença entre essas duas operações, que é fundamental para o uso correto do Git.

Guarde a fronteira: fetch = baixar (atualiza referências remotas), pull = baixar + integrar (fetch + merge). É exatamente nessa distinção que as alternativas se dividem.

  1. 1git fetchBaixa atualizações
  2. 2git mergeIntegra ao branch local
  3. 3git pullfetch + merge
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

O git reset é um comando de manipulação do histórico local. Ele move o ponteiro do branch atual para um commit específico, podendo descartar commits (reset hard), desfazer o staging (reset mixed) ou apenas mover o HEAD (reset soft). Ele não interage com o repositório remoto para baixar atualizações. A banca incluiu essa alternativa para confundir com comandos de "desfazer" ou "reverter", mas o git reset opera exclusivamente no repositório local.

Alternativa B — ❌ Incorreta

O git rebase é um comando de integração que reescreve o histórico de commits. Ele pega os commits de uma branch e os aplica sobre a ponta de outra branch, criando um histórico linear. Ele não baixa nada do repositório remoto; ele reorganiza commits que já existem localmente. A confusão aqui é com o git pull --rebase, que combina fetch com rebase, mas o comando git rebase isolado não sincroniza com o remoto.

Alternativa C — ❌ Incorreta

O git diff é um comando de inspeção que mostra as diferenças entre arquivos, branches, commits ou o working directory. Ele não baixa nada do repositório remoto. É usado para visualizar o que mudou antes de fazer um commit ou merge. A banca incluiu essa alternativa para testar se o candidato confunde "ver diferenças" com "baixar atualizações".

Alternativa D — ❌ Incorreta

O git log é um comando de visualização que exibe o histórico de commits do repositório. Ele mostra informações como hash, autor, data e mensagem de cada commit. Não tem nenhuma função de sincronização com o repositório remoto. É uma ferramenta de consulta, não de transferência de dados.

Alternativa E — ✅ Correta ⟵ GABARITO

O git fetch é o comando que baixa as atualizações do repositório remoto (commits, branches, tags) para o repositório local, atualizando as referências remotas (como origin/main), mas sem mesclar automaticamente com o branch de trabalho atual. Essa é a definição exata do que o enunciado pede. O git pull faria o fetch e o merge em sequência, mas o git fetch sozinho apenas baixa, deixando a integração para um passo posterior.

Gabarito: letra E

Link permanente: /questoes/qg540902