Questão de Engenharia de Software — Git — FUNDATEC 2024
Engenharia de Software›Git
Código
qa631708
Banca
FUNDATEC
Órgão
CETENE
Ano
2024
Cargo
Tecno P ( )
Git é um sistema utilizado para o controle de versão distribuído. Qual comando Git faz o download dos objetos e refs de outro repositório, sem integrá-los a outro repositório ou em um ramo local?
Acheckout
Bfetch
Cmerge
Dpull
Epush
Revelar gabarito e comentário▾
GabaritoB — 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”.
Comandos Git: fetch, pull e a integração de repositórios
Gabarito: letra B. O comando git fetch baixa os objetos e referências (refs) de um repositório remoto para o repositório local, mas não os integra automaticamente ao ramo de trabalho atual — essa integração é justamente o papel do git pull, que combina fetch + merge (ou rebase). A alternativa B descreve com precisão essa função de "baixar sem integrar".
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 local. Essa cópia inclui todo o histórico de commits, todos os ramos (branches) e todas as tags. Quando você trabalha com um repositório remoto (como GitHub, GitLab ou Bitbucket), precisa sincronizar sua cópia local com a remota — e é aí que entram os comandos de transferência de dados.
A distinção central que esta questão explora é entre baixar dados e integrar dados. O git fetch faz apenas a primeira parte: ele conecta-se ao repositório remoto, baixa todos os commits, branches e tags que você ainda não possui localmente, e atualiza as referências remotas (como origin/main). Porém, ele não altera seu diretório de trabalho nem seus ramos locais. Seu código atual permanece intacto — você apenas "enriquece" seu repositório local com as informações mais recentes do remoto, sem que elas afetem seu trabalho em andamento.
Já o git pull é um atalho que executa duas operações em sequência: primeiro um fetch (baixar os dados) e depois um merge (integrar esses dados ao seu ramo local atual). É por isso que o pull pode gerar conflitos de merge — ele está efetivamente alterando seu código. O git merge, por sua vez, é o comando que integra dois ramos (ou um ramo e uma referência remota) em um único, criando um novo commit de merge quando necessário.
Para visualizar a diferença na prática: imagine que você está trabalhando na branch main e um colega fez commits no repositório remoto. Se você executar git fetch, seu repositório local saberá que existem novos commits em origin/main, mas seu diretório de trabalho continuará exatamente como estava. Se executar git pull, além de baixar esses commits, o Git tentará integrá-los à sua branch main local, possivelmente criando um merge ou exigindo que você resolva conflitos.
A pegadinha desta questão está em confundir fetch com pull. Muitos candidatos lembram que ambos "baixam" dados do remoto, mas esquecem que o pull também integra — e é exatamente essa palavra-chave do enunciado ("sem integrá-los") que aponta para o fetch. Guarde a fronteira: fetch = baixar; pull = baixar + integrar. É nela que as alternativas se dividem.
Comandos Git
1Transferência com remoto
fetch
Baixa objetos e refs
Não integra ao ramo local
pull
fetch + merge
Baixa e integra
push
Envia local → remoto
2Integração local
merge
Combina ramos
Cria commit de merge
3Navegação
checkout
Troca de branch
Restaura arquivos
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
O git checkout é um comando de navegação e manipulação de ramos, não de transferência com repositórios remotos. Ele serve para trocar de branch, restaurar arquivos do diretório de trabalho ou criar novos ramos (com -b). Embora seja possível usar git checkout para atualizar arquivos a partir de uma referência remota (ex.: git checkout origin/main -- arquivo.txt), essa não é sua função primária, e ele certamente não "baixa objetos e refs de outro repositório" como descreve o enunciado. O comando que faz isso é o fetch.
Alternativa B — ✅ Correta ⟵ GABARITO
O git fetch é exatamente o comando descrito: ele baixa os objetos e referências (refs) de um repositório remoto para o repositório local, sem integrá-los a nenhum ramo local ou ao diretório de trabalho. Após o fetch, as referências remotas (como origin/main) são atualizadas, mas seu código atual permanece inalterado. Essa é a definição canônica do comando, e a alternativa espelha perfeitamente essa função.
Alternativa C — ❌ Incorreta
O git merge é um comando de integração: ele combina as alterações de dois ramos (ou de um ramo e uma referência) em um único ramo, criando um novo commit de merge quando há divergências. Ele não baixa nada de um repositório remoto — ele trabalha com dados que já estão no repositório local. O merge é a segunda metade do git pull, mas sozinho não realiza nenhuma transferência de dados.
Alternativa D — ❌ Incorreta
O git pull é um atalho que executa fetch + merge (ou fetch + rebase, dependendo da configuração). Ele baixa os objetos e refs do remoto e os integra ao ramo local atual. O enunciado pede explicitamente um comando que baixe "sem integrá-los" — o pull faz exatamente o oposto, pois sua função é justamente integrar. Essa é a alternativa que mais confunde com a correta, mas a palavra "sem integrar" a elimina.
Alternativa E — ❌ Incorreta
O git push é o comando inverso do fetch: ele envia os commits e refs do repositório local para o repositório remoto. Enquanto o fetch baixa, o push sobe. Ele não baixa nada e, portanto, não se encaixa na descrição do enunciado.
A regra de ouro para esta questão: fetch baixa sem integrar; pull baixa e integra; push envia; merge integra o que já está local; checkout navega entre ramos. Memorize esse quadro e você nunca mais errará uma questão sobre esses comandos.