No sistema de controle de versão Git, há 3 comandos com nome...
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.
Comentários
Veja os comentários dos nossos alunos
Gabarito: alternativa C — 2 - 1 - 3
A questão cobra a diferença entre três comandos do Git que possuem nomes parecidos, mas atuam em partes distintas do repositório: histórico de commits, ponteiro do branch e arquivos da área de trabalho.
A primeira descrição afirma que o comando “restaura arquivos na árvore de trabalho (*working tree*) a partir do índice ou de outro commit, sem atualizar o ponteiro do *branch*”. Trata-se do comando **`git restore`**, utilizado para desfazer alterações em arquivos, podendo atuar na área de trabalho ou no *staging area*, sem necessariamente alterar o histórico.
A segunda descrição informa que o comando “atualiza o *branch* atual movendo seu ponteiro para outro commit, podendo adicionar ou remover commits, alterando o histórico do *branch*”. Trata-se do **`git reset`**. Esse comando move o ponteiro `HEAD` e pode afetar o índice e a área de trabalho, dependendo das opções utilizadas, como `--soft`, `--mixed` e `--hard`.
A terceira descrição indica que “um novo commit é criado, revertendo alterações introduzidas por commits anteriores”. Trata-se do **`git revert`**. Diferentemente do `reset`, ele não remove commits do histórico; cria um novo commit que desfaz as alterações de um commit anterior. Por isso, é uma alternativa adequada quando se trabalha em branches compartilhadas ou já publicadas em repositórios remotos.
Resumo para concursos:
git reset: move o ponteiro do branch e pode reescrever o histórico.
git restore: restaura arquivos, normalmente sem alterar o histórico.
git revert: cria um novo commit para desfazer outro commit.
Fonte: ChatGPT
Até onde sei o git reset remove commits indesejados e retorna o ponteiro para uma posição anterior descartando commits... mas não adicionando. O git revert sim, ele adiciona um commit novo, desfazendo alterações, e mantendo o histórico de todos commits feitos. Ao meu ver essa questão poderia ser anulada pois o conceito do git reset está ligeiramente errado ao dizer que pode "adicionar commits".
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo