git restore
git restore: restaurar o diretório de trabalho e/ou a staging area
O git restore devolve os arquivos a um estado conhecido. Por padrão, ele substitui os arquivos do diretório de trabalho pelo que está na staging area. Se não há nada no stage, o resultado é o mesmo do seu último commit.
Com a opção --staged, ele devolve a staging area ao estado do último commit (ou do commit definido em --source) e deixa o diretório de trabalho como está. É assim que você tira alterações do stage, voltando ao estado do commit sem perder suas edições.
Adicionado no Git 2.23.0, o git restore é o jeito focado de desfazer alterações locais ou tirar arquivos do stage. Se você costuma fazer tudo com o git reset, pode manter o hábito — mas o git restore é mais difícil de usar errado e só mexe no diretório de trabalho e na staging area, não no histórico de commits.
Casos de uso
-
Restaurar o diretório de trabalho (nada no stage): Você fez alterações que não quer. Devolva o diretório de trabalho ao último commit.
Solução:
git restore --worktree .OU simplesmentegit restore ., porque o modo--worktreeé o padrão. -
Restaurar a staging area, manter o diretório de trabalho: Você adicionou coisas demais ao stage. Devolva a staging area ao último commit e mantenha as edições do seu diretório de trabalho.
Solução:
git restore --staged . -
Restaurar o diretório de trabalho, manter a staging area: Você colocou as coisas certas no stage e depois fez mais edições que não quer manter. Devolva o diretório de trabalho ao que está no stage.
Solução:
git restore --worktree .OUgit restore . -
Restaurar a staging area e o diretório de trabalho: Você quer jogar tudo fora — o que está no stage e o que está fora dele. Devolva os dois ao último commit.
Solução:
git restore --worktree --staged .
Exemplos
Descarte as alterações de um arquivo específico:
git restore README.mdDescarte as alterações de todos os arquivos do diretório atual (o caminho . significa "aqui"):
git restore .Tire um arquivo do stage, mas mantenha as edições dele no diretório de trabalho:
git restore --staged README.mdTire tudo do stage e devolva o diretório de trabalho ao último commit:
git restore --worktree --staged .Restaure um arquivo a partir de um commit específico.
git restore --source a1b2c3d4 README.mdEscolha interativamente quais alterações manter ou descartar:
git restore --patchOu a forma mais curta:
git restore -p.gitignoregit checkoutgit configgit taggit worktree