Início·Comandos de terminal

git reset

git

Uso

git reset [--soft|--mixed|--hard] <commit> | git reset <path>

Move o ponteiro do branch para outro commit: --soft mantém tudo preparado, --mixed (padrão) também limpa a área de preparação mas deixa suas edições nos arquivos, e --hard descarta essas edições junto, sem volta.

Opções comuns

OpçãoSignificado
--softmove the branch only; index and files keep everything, so the change stays staged
--mixeddefault: also clear the staging area, leaving edits in your files
--hardalso overwrite your files; uncommitted work is destroyed
<path>no commit given: unstage that path
--keepmove but refuse if it would overwrite a local change
--mergelike --hard but keeps changes that do not collide

Exemplos

git reset --soft HEAD~1

undoes the last commit and leaves everything staged

git reset HEAD~1

undoes the last commit; the changes sit in your files, unstaged

git reset src/app.ts

unstages one file without changing it

git reset --hard origin/main

throws away local commits AND uncommitted edits

O confuso é que desfazer tem várias formas: mover para onde um branch aponta não é o mesmo que criar um commit que reverte.

Como ler

  • Os colchetes [ ] marcam uma parte que você pode omitir.
  • As reticências … indicam que você pode listar vários.
  • As opções diferenciam maiúsculas: em alguns comandos -r e -R fazem coisas diferentes.

Perguntas

Q. O que git reset faz?

Move o ponteiro do branch para outro commit: --soft mantém tudo preparado, --mixed (padrão) também limpa a área de preparação mas deixa suas edições nos arquivos, e --hard descarta essas edições junto, sem volta.

Q. Como se digita?

git reset [--soft|--mixed|--hard] <commit> | git reset <path> — os colchetes marcam o que você pode omitir.

Q. Quantas opções vale a pena saber?

Aqui estão 6; a lista completa está em man git. Este comando fica em git.

Comandos relacionados

página man: man git-reset