Desfazendo alterações no repositório
Comandos importantes
1. git restore
Descarta todas as alterações que você fez localmente.
Uma vez salvo, o repositório fica com essa versão armazenada, mantendo a integridade de todos os arquivos.
Digamos que você delete o arquivo X e o arquivo Y, e adicione o arquivo Z, tudo isso localmente, no seu computador, porém não dê commit nem push.
Ao usr o comando git restore, o repositório voltará a ser exatamente como no último push, deletando na sua máquina o arquivo Z, e restaurando os arquivos X e Y.
2. git commit --amend -m"[mensagem]"
Com esse comando, é possível mudar a mensagem do último commit feito.
3. git reset
Esse comando serve para voltar a um commit anterior. Ele possui 3 variações:
• git reset --soft [head do commit que você quer usar como ponto de retorno]Com esse comando você volta para o commit escolhido, mas mantém as alterações prontas para serem commitadas denovo na staging area, como se você já tivesse feito o git add ., sem modificar os arquivos locais.
• git reset --mixed [head do commit que você quer usar como ponto de retorno]Com esse comando você volta para o commit escolhido, mas retira as alterações da staging area, necessitando passar um git add . caso queria dar commit nos arquivos alterados.
Acompanhe as anotações em vermelho.

Nesse exemplo tinhamos os commits 1; 2 e 3; respectivamente. Passamos o comando git reset --mixed para voltar as mudanças computadas para o estado que estavam no commit 2; descartando tudo do commit 3. A diferença do comando git reset --soft para esse, é que nesse as mudanças ficam aguardando para serem adicionadas, fazendo necessário que você passe um git add . caso queira commita-las, como citado anteriormente. Esse comando não faz alterações nos arquivos locais.
• git reset --hard [head do commit que você quer usar como ponto de retorno]Com esse comado você volta para o commit escolhido, porém muda localmente os arquivos para o estado em que estavam no momento do commit. É muito útil, porém CUIDADO ao usar, pois se usar incorretamente, terá que refazer todas as alterações nos arquivos manualmente.
4. Outro uso para o git reset
Você também pode usar dessa forma: git reset [nome do arquivo] para remover arquivos da staging area.
