Pular para o conteúdo principal

Questão de Engenharia de Software — Git — VUNESP 2023

Engenharia de SoftwareGit
Código
vu196591
Banca
VUNESP
Órgão
TJ RS
Ano
2023
Cargo
TTI ( )

Um dos sistemas de controle de versão mais populares para uso em desenvolvimento de software atualmente é o Git.

 

Com relação ao Git, assinale a alternativa que apresenta o comando que atualiza as referências locais com relações às remotas, informando ao Git local que ele deve obter as informações de metadados mais recentes do repositório original, mas não faz a integração e sobrescrita nos arquivos de trabalho locais.

  1. Astatus
  2. Bpull
  3. Cmerge
  4. Dfetch
  5. Eremote
Revelar gabarito e comentário

GabaritoD — 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: fetch, pull e a sincronização com o repositório remoto

Gabarito: letra D. O comando git fetch atualiza as referências locais com as informações de metadados mais recentes do repositório remoto, sem integrar ou sobrescrever os arquivos de trabalho locais — exatamente o que descreve o enunciado. Essa é a função central do fetch: baixar os commits, branches e tags do remoto para o repositório local, mas deixar o working directory intacto.

O Git é um sistema de controle de versão distribuído, o que significa que cada desenvolvedor possui uma cópia completa do repositório em sua máquina. Para sincronizar com o repositório remoto (como o GitHub, GitLab ou Bitbucket), o Git oferece comandos que atualizam o repositório local de diferentes formas. A distinção fundamental está entre baixar informações e integrar alterações. O fetch faz apenas a primeira parte: ele busca os metadados e objetos do remoto, atualizando as referências locais (como origin/main), mas não altera o diretório de trabalho nem o branch atual. Já o pull é um atalho que executa fetch seguido de merge (ou rebase), ou seja, além de baixar, ele integra as alterações remotas ao branch local, modificando os arquivos de trabalho. O merge é o comando que combina históricos de branches diferentes, e o status apenas exibe o estado atual do repositório, sem qualquer interação com o remoto. O remote é um comando de gerenciamento dos repositórios remotos configurados, permitindo adicionar, remover ou listar conexões remotas.

Para entender a diferença na prática, imagine que você está trabalhando em um projeto com outros desenvolvedores. Quando você executa git fetch origin, o Git baixa as alterações que outros fizeram no repositório remoto, mas não as aplica no seu código. Isso é útil para inspecionar o que mudou antes de integrar. Por outro lado, git pull origin main baixa e já aplica as alterações no seu branch atual, o que pode causar conflitos se você tiver modificações locais não commitadas. O fetch é, portanto, uma operação segura e não destrutiva, enquanto o pull é uma operação que modifica o estado do seu diretório de trabalho.

A pegadinha clássica desta questão é confundir fetch com pull. A banca descreve exatamente o comportamento do fetch — atualizar referências e metadados sem integrar — e o candidato que não domina a diferença acaba marcando pull, que é o comando mais conhecido. A palavra-chave no enunciado é "não faz a integração e sobrescrita nos arquivos de trabalho locais", que elimina o pull e aponta diretamente para o fetch. Guarde a fronteira: fetch = baixar sem integrar; pull = baixar e integrar. É exatamente nessa distinção que as alternativas se dividem.

Comando

Função principal

Interage com o remoto?

Altera arquivos de trabalho?

status

Exibe o estado atual do repositório (modificados, staging, branch)

Não

Não

pull

Baixa e integra alterações do remoto no branch local

Sim

Sim

merge

Combina históricos de branches diferentes

Não (trabalha com branches locais)

Sim

fetch

Atualiza referências locais com metadados do remoto, sem integrar

Sim

Não

remote

Gerencia repositórios remotos configurados (adicionar, remover, listar)

Não (apenas configuração)

Não

1Baixa metadados do remoto
2Atualiza referências locais
3Não integra no working directory
4git pull
fetch + merge
Integra alterações no branch
5git merge
Combina históricos locais
6git status
Estado atual do repositório
7git remote
Gerencia conexões remotas
git fetch
LEVELsoulevel.com.br
git fetch: Baixa metadados do remoto; Atualiza referências locais; Não integra no working directory; git pull (fetch + merge, Integra alterações no branch); git merge (Combina históricos locais); git status (Estado atual do repositório); git remote (Gerencia conexões remotas)

Alternativa A — ❌ Incorreta

O comando git status exibe o estado atual do repositório: arquivos modificados, arquivos em staging e o branch atual. Ele não interage com o repositório remoto, ou seja, não baixa nenhuma informação de metadados. É um comando puramente local, usado para inspecionar o que está acontecendo no diretório de trabalho e na área de staging. A alternativa erra ao atribuir a ele a função de atualizar referências remotas.

Alternativa B — ❌ Incorreta

O comando git pull é um atalho que executa git fetch seguido de git merge (ou git rebase). Ele baixa as alterações do remoto e integra no branch local, modificando os arquivos de trabalho. O enunciado diz explicitamente que o comando procurado "não faz a integração e sobrescrita nos arquivos de trabalho locais", o que exclui o pull. A pegadinha aqui é que o pull é o comando mais usado no dia a dia, mas ele faz exatamente o oposto do que a questão pede.

Alternativa C — ❌ Incorreta

O comando git merge combina o histórico de dois branches diferentes. Ele é usado para integrar alterações de um branch em outro, mas não busca informações do repositório remoto. O merge trabalha com branches locais (ou com branches remotos já baixados via fetch). A alternativa erra ao atribuir a ele a função de atualizar referências remotas, pois ele apenas integra históricos já existentes localmente.

Alternativa D — ✅ Correta ⟵ GABARITO

O comando git fetch atualiza as referências locais com as informações de metadados mais recentes do repositório remoto, baixando os commits, branches e tags que não existem localmente. Ele não integra essas alterações no diretório de trabalho, ou seja, não modifica os arquivos locais. Essa é exatamente a descrição do enunciado: "atualiza as referências locais com relações às remotas, informando ao Git local que ele deve obter as informações de metadados mais recentes do repositório original, mas não faz a integração e sobrescrita nos arquivos de trabalho locais". O fetch é uma operação segura e não destrutiva, ideal para inspecionar alterações antes de integrá-las.

Alternativa E — ❌ Incorreta

O comando git remote é usado para gerenciar os repositórios remotos configurados no projeto, como adicionar, remover ou listar conexões remotas (por exemplo, git remote add origin <url>). Ele não baixa informações de metadados nem atualiza referências locais. A alternativa erra ao atribuir a ele a função de sincronizar com o remoto, pois ele apenas gerencia a configuração das conexões.

Gabarito: letra D — o comando que atualiza referências locais sem integrar é o git fetch.

Link permanente: /questoes/vu196591