Um dos sistemas mais utilizados para o controle de versão de...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a E - git reset --soft HEAD~1.
Para resolver essa questão, é necessário entender o funcionamento do git, que é um sistema de controle de versão distribuído, e conhecer os comandos de manipulação de commits. A questão exige uma solução onde o programador possa desfazer o último commit na branch incorreta, mas mantendo as alterações em seu espaço de trabalho local para não perder o código que ele realizou.
O comando git reset --soft HEAD~1 é a resposta correta porque ele retrocede o HEAD para o commit anterior, mas mantém as alterações feitas no workspace (área de trabalho), ou seja, o código não é perdido e as alterações continuam disponíveis para serem comitadas novamente na branch correta. O uso do parâmetro --soft é essencial, pois ele não altera os arquivos do diretório de trabalho, diferentemente do comando com --hard, que descartaria todas as alterações.
Para completar, vamos explicar brevemente porque as outras alternativas são incorretas:
- git push — Envia os commits para um repositório remoto, mas não resolve o problema de um commit na branch errada.
- git reset --hard HEAD~1 — Embora reverta o último commit, esse comando também descartaria todas as modificações no diretório de trabalho, o que não é desejado pelo programador.
- git stash — Salva as alterações locais não comitadas em uma área temporária, mas não remove o commit feito incorretamente.
- git clone — Cria uma cópia de um repositório existente, o que não tem relação com a remoção de um commit específico.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
E)
git reset [
This form resets the current branch head to
--soft
Does not touch the index file or the working tree at all (but resets the head to
--mixed
Resets the index but not the working tree (i.e., the changed files are preserved but not marked for commit) and reports what has not been updated. This is the default action.
If -N is specified, removed paths are marked as intent-to-add (see git-add[1]).
--hard
Resets the index and working tree. Any changes to tracked files in the working tree since
--merge
Resets the index and updates the files in the working tree that are different between
In other words, --merge does something like a git read-tree -u -m
--keep
Resets index entries and updates files in the working tree that are different between
Fonte: https://git-scm.com/docs/git-reset
https://medium.com/@andgomes/os-tr%C3%AAs-tipos-de-reset-aa220658d9b2
git push : envia alterações locais para o servidor ( remote )
git reset --hard HEAD~1 : desfaz commit e perde as alterações nos arquivos
git stash : armazena alterações na pilha para uso posterior
git clone: obtém repositório do servidor para a maquina local
git reset --soft HEAD~1: desfaz commit e não perde alterações nos arquivos
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo