git reset E git restore

Para o caso de ser necessário tirar uma mudança do estado staged, ou até mesmo voltar ao estado do commit atual (HEAD), é possível usar os comandos git reset e git restore.

git restore

O comando git restore restaura os arquivos que estão visiveis (working tree) para serem idênticos aos do commit atual (HEAD). Para restaurar os arquivos main.c e vetor.c, por exemplo:

git restore -- main.c vetor.c

O comando git restore, no entanto, não está presente em versões desatualizadas do Git, por isso, você pode precisar usar o comando git reset.

git reset

O comando git reset é semelhante ao git restore, mas tem mais variações além de ser mais fácil de fazer algo errado. Se não for usada nenhuma flag, ou a flag --mixed for usada, os arquivos que estavam staged vão deixar de ser staged, mas não serão alterados. Por exemplo, para restaurar todos os arquivos:

git reset --mixed HEAD
# ou simplesmente
git reset HEAD

Com a flag --hard, o comportamento é semelhante ao de git restore, exceto que arquivos novos não serão deletados.

git reset --hard HEAD

Há ainda a flag --soft, que será explicado mais a frente, pois envolve um uso do comando ainda não explicado.