Da Anonimo (non verificato) , 29 Aprile 2026

Sinossi

git restore [--staged] [--source=<tree>] [-p] <pathspec>...

Descrizione

Il comando git restore, introdotto in Git 2.23, sostituisce la metà di ripristino file di git checkout. È costruito apposta per due casi: scartare modifiche non in stage nella working tree (comportamento predefinito) e togliere modifiche dall'index (con --staged). La separazione più pulita rende lo strumento meno soggetto a errori di git checkout.

Puoi ripristinare da qualsiasi sorgente: un altro commit, un branch o un tag. Combinato con -p, puoi scegliere interattivamente quali hunk ripristinare. git restore non modifica mai branch o HEAD — tocca solo i file.

Nell'uso quotidiano, git restore si integra con alias e CI.

Capire il modello dati di Git aiuta a prevedere i risultati.

Opzioni comuni

OpzioneDescrizione
--stagedRipristina l'index invece della working tree (cioè toglie dallo stage).
--worktreeRipristina la working tree (default).
--source=<tree> / -sRipristina da un commit, branch o tag specifico.
-p, --patchSceglie interattivamente gli hunk da ripristinare.
--ours / --theirsDurante un conflitto, ripristina un lato.
-q, --quietSopprime il progresso.

Esempi

git restore src/main.c
# Scarta modifiche non in stage in main.c

git restore --staged config.yml
# Toglie dallo stage un file (mantieni le modifiche della working tree)

git restore --source=HEAD~3 README.md
# Riporta indietro README.md come era 3 commit fa

git restore -p
# Sceglie interattivamente gli hunk da scartare

Errori comuni

git restore su un file con modifiche non salvate le sovrascrive silenziosamente — non c'è prompt di conferma e nessun easy undo. Fai prima stash se incerto. I principianti a volte confondono --staged con git reset --hard; --staged tocca solo l'index, lasciando intatte le modifiche della working tree.

Comandi correlati

git reset, git checkout, git stash, git revert