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ção | Significado |
|---|---|
| --soft | move the branch only; index and files keep everything, so the change stays staged |
| --mixed | default: also clear the staging area, leaving edits in your files |
| --hard | also overwrite your files; uncommitted work is destroyed |
| <path> | no commit given: unstage that path |
| --keep | move but refuse if it would overwrite a local change |
| --merge | like --hard but keeps changes that do not collide |
Exemplos
git reset --soft HEAD~1undoes the last commit and leaves everything staged
git reset HEAD~1undoes the last commit; the changes sit in your files, unstaged
git reset src/app.tsunstages one file without changing it
git reset --hard origin/mainthrows 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