Pular para o conteúdo principal

Questão de Engenharia de Software — Gerência de Configuração — INSTITUTO AOCP 2025

Engenharia de SoftwareGerência de Configuração
Código
qg540675
Banca
INSTITUTO AOCP
Órgão
MPE-RS
Ano
2025
Nível
Superior
Cargo
Analista do Ministério Público - Informática
Durante o processo de desenvolvimento, antes de integrar no seu repositório local, tornando possível inspecionar as alterações antes de realizar o merge no projeto, qual comando do GIT pode ser fazer o download a partir da ramificação de outro repositório, juntamente com todos os commits e arquivos associados?
  1. Adiff
  2. Bfetch
  3. Crebase
  4. Dstash
  5. Etag
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”.

Git: Comandos de Integração e Inspeção

Gabarito: letra B. O comando git fetch baixa commits, arquivos e referências de um repositório remoto para o repositório local, sem integrá-los automaticamente ao branch de trabalho — exatamente o que o enunciado descreve: "fazer o download a partir da ramificação de outro repositório, juntamente com todos os commits e arquivos associados", permitindo inspecionar antes do merge. Os demais comandos (diff, rebase, stash, tag) não realizam download de ramificações remotas.

O Git é um sistema de controle de versão distribuído que trata os dados como um conjunto de imagens (snapshots) do sistema de arquivos. Cada commit é uma alteração consolidada, identificada por um checksum SHA-1. Para entender o fetch, é essencial conhecer as três áreas do projeto: o diretório de trabalho (onde os arquivos são editados), a área de preparo (staging area, onde as alterações são registradas antes do commit) e o repositório (onde o histórico é armazenado permanentemente).

O comando git fetch é a operação que atualiza as referências remotas no repositório local, baixando os commits e arquivos que existem no remoto mas ainda não estão no branch local. Ele não altera o diretório de trabalho nem o branch atual — apenas traz os dados para o repositório local, permitindo que o desenvolvedor inspecione as mudanças (com git log, git diff, etc.) antes de decidir integrá-las. Essa é a diferença crucial em relação ao git pull, que combina fetch + merge (ou rebase), integrando automaticamente as mudanças ao branch de trabalho.

Na prática, o fluxo típico é: git fetch origin → inspecionar as alterações com git log origin/main ou git diff main origin/main → e só então git merge origin/main (ou git rebase origin/main) para integrar. Esse processo é fundamental em equipes, pois permite revisar o trabalho de outros desenvolvedores antes de incorporá-lo ao seu próprio código, evitando conflitos inesperados e garantindo que o histórico seja integrado de forma controlada.

A pegadinha desta questão está em confundir fetch com pull ou com merge. O fetch apenas baixa; a integração é feita por merge ou rebase. O pull é um atalho que faz os dois passos de uma vez. O enunciado é claro ao dizer "antes de integrar no seu repositório local, tornando possível inspecionar as alterações antes de realizar o merge" — isso descreve exatamente o fetch, que prepara o terreno para a inspeção sem integrar.

1Download (remoto → local)
fetch: baixa sem integrar
pull: fetch + merge/rebase
2Integração (local)
merge
rebase
3Inspeção (local)
diff: compara alterações
log: histórico
4Outros
stash: guarda alterações pendentes
tag: marca versões
Git: comandos de integração
LEVELsoulevel.com.br
Git: comandos de integração: Download (remoto → local) (fetch: baixa sem integrar, pull: fetch + merge/rebase); Integração (local) (merge, rebase); Inspeção (local) (diff: compara alterações, log: histórico); Outros (stash: guarda alterações pendentes, tag: marca versões)

Alternativa A — ❌ Incorreta

O comando git diff é usado para comparar diferenças entre arquivos, commits, branches ou áreas do Git (por exemplo, git diff mostra as alterações não preparadas no diretório de trabalho). Ele não faz download de nada de um repositório remoto — é uma operação puramente local de inspeção. A banca o coloca aqui para confundir com a etapa de "inspecionar as alterações", mas o diff é a ferramenta de inspeção, não a de download.

Alternativa B — ✅ Correta ⟵ GABARITO

O git fetch é o comando que baixa commits, arquivos e referências de um repositório remoto para o repositório local, sem integrá-los ao branch de trabalho. Ele atualiza as referências remotas (como origin/main) e permite inspecionar as alterações antes de realizar o merge. É exatamente o que o enunciado descreve: "fazer o download a partir da ramificação de outro repositório, juntamente com todos os commits e arquivos associados", permitindo inspeção prévia.

Alternativa C — ❌ Incorreta

O git rebase é um comando de integração que reescreve o histórico de commits, aplicando os commits de um branch sobre a ponta de outro. Ele não faz download de nada — opera apenas com o que já está no repositório local. A banca o coloca aqui para confundir com o merge, mas o rebase é uma alternativa ao merge para integrar mudanças, não para baixá-las.

Alternativa D — ❌ Incorreta

O git stash é usado para guardar temporariamente alterações não commitadas do diretório de trabalho, permitindo que o desenvolvedor mude de branch ou faça outras operações sem perder o trabalho em andamento. Ele não tem relação com download de repositórios remotos — é uma operação local de "arquivamento" de mudanças pendentes.

Alternativa E — ❌ Incorreta

O git tag é usado para marcar pontos específicos do histórico (como versões de release) com nomes significativos (ex.: v1.0.0). Ele não faz download de nada — é uma operação de rotulação de commits, geralmente usada para marcar versões estáveis do software.

NÃO CAIA NESSA!

A banca explora a confusão entre fetch e pull. O pull é um atalho que executa fetch + merge (ou rebase) de uma vez, integrando automaticamente as mudanças ao branch de trabalho. O enunciado é explícito: "antes de integrar no seu repositório local, tornando possível inspecionar as alterações antes de realizar o merge" — isso elimina o pull e aponta diretamente para o fetch. Fique atento: se a questão mencionar "baixar sem integrar" ou "inspecionar antes do merge", a resposta é fetch; se mencionar "baixar e integrar de uma vez", é pull.

PEGA ESSA DICA!

Para memorizar, pense no fetch como "trazer para o depósito local" e no merge/rebase como "colocar na prateleira do branch atual". O pull é o atalho que faz os dois de uma vez. Na prova, leia o enunciado com atenção: se ele diz "antes de integrar" ou "inspecionar antes do merge", a resposta é fetch.

Gabarito: letra B

Link permanente: /questoes/qg540675