Pular para o conteúdo principal

Questão de Engenharia de Software — Gerência de Configuração — FGV 2026

Engenharia de SoftwareGerência de Configuração
Código
gp044416
Banca
FGV
Órgão
TJ-SC
Ano
2026
Cargo
Analista de Sistemas
No sistema de controle de versão Git, há 3 comandos com nomes similares: reset, restore e revert.

Considerando esse contexto, relacione os comandos da coluna da esquerda às respectivas características, apresentadas na coluna da direita.

Q38.png (332×172)

Assinale a opção que indica a relação correta, na ordem apresentada.
  1. A1 – 2 – 3.
  2. B1 – 3 – 2.
  3. C2 – 1 – 3.
  4. D2 – 3 – 1.
  5. E3 – 2 – 1.
Revelar gabarito e comentário

GabaritoC — 2 – 1 – 3.

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: reset, restore e revert

Gabarito: letra C. A relação correta é 2 – 1 – 3: o comando reset move o ponteiro do branch (HEAD) para um commit anterior, o restore descarta alterações em arquivos do working directory ou da staging area, e o revert cria um novo commit que desfaz as mudanças de um commit anterior, preservando o histórico. A distinção central está em reescrever o histórico (reset) versus criar um novo commit (revert), e em operar sobre commits (reset/revert) versus operar sobre arquivos (restore).

Os três comandos do Git são frequentemente confundidos porque todos lidam com "desfazer" algo, mas cada um atua em uma camada diferente do repositório. O git reset é o mais poderoso e perigoso: ele move o ponteiro do branch atual (HEAD) para um commit específico, descartando commits posteriores. Dependendo do modo usado (--soft, --mixed ou --hard), ele pode afetar a staging area e o working directory. Já o git restore é mais cirúrgico: ele atua apenas em arquivos, revertendo o conteúdo de um arquivo no working directory (para o estado do index ou de um commit) ou removendo um arquivo da staging area (desfazendo o git add). Por fim, o git revert é o mais seguro para histórico compartilhado: ele não apaga commits, mas cria um novo commit que aplica as alterações inversas do commit alvo, preservando a linha do tempo.

A pegadinha clássica da banca é inverter as funções de reset e revert, ou confundir restore com reset. O critério decisivo é: se o comando reescreve o histórico, é reset; se cria um novo commit, é revert; se mexe em arquivos sem tocar no histórico, é restore. Essa fronteira é exatamente o que separa as alternativas.

NÃO CAIA NESSA!

A banca adora trocar as funções de reset e revert, pois ambos "desfazem" mudanças. Lembre-se: reset reescreve o histórico (move o HEAD, descartando commits), enquanto revert preserva o histórico (cria um novo commit que desfaz o anterior). Se o enunciado mencionar "cria um novo commit", só pode ser revert.

1reset
Move o ponteiro do branch (HEAD)
Reescreve o histórico
Opera sobre commits
2restore
Descarta alterações em arquivos
Atua no working directory / staging
Opera sobre arquivos
3revert
Cria novo commit que desfaz o anterior
Preserva o histórico
Opera sobre commits
Comandos Git para "desfazer"
LEVELsoulevel.com.br
Comandos Git para "desfazer": reset (Move o ponteiro do branch (HEAD), Reescreve o histórico, Opera sobre commits); restore (Descarta alterações em arquivos, Atua no working directory / staging, Opera sobre arquivos); revert (Cria novo commit que desfaz o anterior, Preserva o histórico, Opera sobre commits)

Alternativa A — ❌ Incorreta

A sequência 1 – 2 – 3 atribui a característica 1 ao reset, a 2 ao restore e a 3 ao revert. Isso está errado porque a característica 1 (mover o ponteiro do branch) pertence ao reset, não ao restore. A alternativa inverte as funções de reset e restore, confundindo o comando que opera sobre commits com o que opera sobre arquivos.

Alternativa B — ❌ Incorreta

A sequência 1 – 3 – 2 atribui a característica 1 ao reset, a 3 ao restore e a 2 ao revert. O erro está em colocar a característica 3 (criar um novo commit que desfaz alterações) no restore, quando essa é a função do revert. O restore não cria commits; ele apenas restaura o conteúdo de arquivos.

Alternativa C — ✅ Correta ⟵ GABARITO

A sequência 2 – 1 – 3 está correta: a característica 2 (descartar alterações em arquivos) corresponde ao restore; a característica 1 (mover o ponteiro do branch para um commit anterior) corresponde ao reset; e a característica 3 (criar um novo commit que desfaz as mudanças de um commit anterior) corresponde ao revert. Essa é a relação funcional correta entre os três comandos.

Alternativa D — ❌ Incorreta

A sequência 2 – 3 – 1 atribui a característica 2 ao reset, a 3 ao restore e a 1 ao revert. O erro está em colocar a característica 2 (descartar alterações em arquivos) no reset, quando essa é a função do restore. O reset opera sobre commits, não sobre arquivos individualmente.

Alternativa E — ❌ Incorreta

A sequência 3 – 2 – 1 atribui a característica 3 ao reset, a 2 ao restore e a 1 ao revert. O erro está em colocar a característica 3 (criar um novo commit que desfaz alterações) no reset, quando essa é a função do revert. O reset reescreve o histórico, não cria novos commits.

PEGA ESSA DICA!

Para não errar, memorize o par: reset = reescreve o histórico (move o HEAD) e revert = preserva o histórico (cria um novo commit). O restore é o único que não mexe em commits — ele atua apenas em arquivos. Na prova, leia a característica e pergunte: "isso mexe em commits ou em arquivos?" Se mexe em commits, é reset ou revert; se mexe em arquivos, é restore.

Gabarito: letra C

Link permanente: /questoes/gp044416