git restore
Restaura arquivos no diretório de trabalho ou na área de preparação
O comando 'git restore' volta arquivos a uma versão conhecida. Por padrão, sobrescreve um arquivo de trabalho com sua versão preparada, descartando suas edições. Com --staged, tira um arquivo da área de preparação e mantém suas edições no disco. Com --source, você recupera um arquivo como era em qualquer commit. Foi adicionado no Git 2.23 para assumir a parte do git checkout que restaura arquivos.
Sinopse
git restore [<options>] [--source=<tree>] [--staged] [--worktree] [--] <pathspec>...Opções
Escolhendo a opção certa
restore versus comandos antigos
As mesmas ações, antigas e novas
| Comando | Equivalente antigo | Efeito |
|---|---|---|
git restore app.js | git checkout -- app.js | Descartar edições não preparadas |
git restore --staged app.js | git reset app.js | Tirar da preparação, manter edições |
git restore --source=HEAD~1 app.js | git checkout HEAD~1 -- app.js | Arquivo de um commit antigo |
Exemplos
Descartar edições
git restore app.jsDescarta as alterações não preparadas de app.js.
Tirar um arquivo da preparação
git restore --staged app.jsTira app.js da área de preparação e mantém as edições.
Arquivo de um commit antigo
git restore --source=HEAD~2 app.jsRecupera app.js como era dois commits atrás.
Exemplos de fluxos de trabalho
git add .Tudo está preparado
git restore --staged README.mdREADME.md sai da preparação
git commit -m "Add to cart"O commit deixa README.md de fora
Solução de problemas
error: pathspec 'x' did not match any file(s) known to git
Causa: O arquivo não é rastreado ou o caminho está errado
Confira o caminho com git status; restore só funciona em arquivos rastreados
Restaurei um arquivo e perdi minhas edições
Causa: git restore sobrescreve o arquivo de trabalho
Edições não salvas foram perdidas; o histórico de desfazer do seu editor talvez ainda as tenha. Da próxima vez, faça git stash antes
Dicas e armadilhas
Boas práticas
- ✓Execute git diff antes de git restore para ver o que você vai descartar.
- ✓Use git restore --staged para tirar da preparação — ele nunca mexe nas suas edições.
- ✓Prefira git restore a git checkout para arquivos: o nome diz o que ele faz.
Erros comuns
- ✗Executar git restore <file> em edições que você queria manter — edições descartadas não podem ser recuperadas.
- ✗Esperar que git restore --staged descarte sua edição: ele só tira da preparação.
- ✗Usar git restore para desfazer um commit — ele restaura arquivos; para commits use git reset ou git revert.
Perguntas frequentes
git restore altera arquivos. git reset move o branch para outro commit (e também pode redefinir arquivos).
Não para edições de trabalho descartadas: o Git nunca as guardou. Tirar da preparação com --staged não perde nada.
Git 2.23 ou mais recente. Em versões antigas use git checkout -- <file> e git reset <file>.