Questão nº 19
Questão de Desenvolvimento de Sistemas · FGV SEFAZ-MG 2022 - Tarde (nº 19)
O comando git que deve ser usado para descartar commits que foram feitos apenas localmente e traz o repositório local para o estado do último push do repositório remoto é o
- A`git reset`. (alternativa correta)
- B`git revert`.
- C`git clean`.
- D`git stash`.
- E`git discard`.
Resposta comentada
Gabarito Alternativa A
Para descartar alterações de commits que ainda não foram compartilhados (apenas locais) e alinhar seu histórico com o do repositório remoto, você precisa reescrever o histórico local.
(A) Correta: O comando `git reset` é usado para mover o ponteiro `HEAD` (que indica seu commit atual) para um commit anterior. Ao usá-lo com a opção `--hard` e especificando a referência do ramo remoto (ex: `git reset --hard origin/main`), ele descarta todos os commits locais que estão à frente do commit remoto e também limpa o diretório de trabalho e a área de staging, fazendo com que seu repositório local fique exatamente igual ao estado do último push do repositório remoto.
(B) Incorreta: O comando `git revert` cria um novo commit que desfaz as alterações de um commit anterior. Ele não descarta o histórico, mas sim adiciona um novo registro que anula o efeito de um commit existente. É ideal para desfazer alterações que já foram publicadas em um repositório remoto compartilhado, pois mantém o histórico intacto e linear. Armadilha: Ambos "desfazem" algo, mas `revert` cria um novo commit para desfazer histórico público, enquanto `reset` reescreve/descarta histórico privado (local).
(C) Incorreta: O comando `git clean` é utilizado para remover arquivos não rastreados (que não estão no controle de versão) do diretório de trabalho. Ele não manipula commits ou o histórico do repositório.
(D) Incorreta: O comando `git stash` é usado para salvar temporariamente as alterações que você fez no seu diretório de trabalho e área de staging (trabalho em andamento) sem precisar fazer um commit. Ele não descarta commits do histórico, apenas guarda o estado atual para que você possa mudar de branch ou fazer outra coisa.
(E) Incorreta: `git discard` não é um comando Git padrão.
Fonte: FGV SEFAZ-MG 2022 - Tarde Auditor Fiscal - Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.