Comandos do Git

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

  1. 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 simplesmente git restore ., porque o modo --worktree é o padrão.

  2. 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 .

  3. 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 . OU git restore .

  4. 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.md

Descarte 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.md

Tire 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.md

Escolha interativamente quais alterações manter ou descartar:

git restore --patch

Ou a forma mais curta:

git restore -p