Questão de Engenharia de Software — Gerência de Configuração — FGV 2026
Engenharia de Software›Gerê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.
Assinale a opção que indica a relação correta, na ordem
apresentada.
A1 – 2 – 3.
B1 – 3 – 2.
C2 – 1 – 3.
D2 – 3 – 1.
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: resetreescreve o histórico (move o HEAD, descartando commits), enquanto revertpreserva o histórico (cria um novo commit que desfaz o anterior). Se o enunciado mencionar "cria um novo commit", só pode ser revert.
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.