git restore în Git

Anularea modificărilor locale din fișiere sau scoaterea fișierelor din staging area fără riscurile comenzilor vechi git checkout / git reset.

Sintaxă comandă
git restore [opțiuni] <fișier>

Ani la rând, comanda `git checkout` a fost responsabilă atât pentru comutarea ramurilor, cât și pentru anularea modificărilor din fișiere, creând confuzie masivă și accidente grave în rândul programatorilor. Pentru a clarifica aceste roluri, Git a introdus două comenzi dedicate: `git switch` (pentru ramuri) și git restore (pentru fișiere).

Comanda git restore se ocupă exclusiv de restaurarea conținutului fișierelor. Dacă ai editat un fișier și dorești să revii la ultima versiune salvată în commit, comanda anulează instant modificările locale.

Dacă ai adăugat deja fișiere în staging area cu `git add`, comanda git restore --staged le scoate din staging fără a pierde modificările scrise în cod, înlocuind vechea comandă ambiguă `git reset HEAD `.

Sintaxă, opțiuni și concepte cheie

Opțiune / Concept Descriere practică
Anulează modificările nesalvate din directorul de lucru (working directory).
--staged Scoate fișierul din staging area (unstage), păstrând conținutul editat pe disc.
--source Restaurează starea fișierului așa cum arăta el la un commit sau tag specificat din trecut.
. (punct) Restaurează toate fișierele din directorul curent și subdirectoare.

Exemple practice și cod

Exemplul 1: Anularea modificărilor din staging și working tree

Cum se folosește `git restore` pentru gestionarea stării.

# 1. Am adăugat din greșeală fișierul de configurare secret în staging:
$ git add .env.local

# Îl scoatem din staging fără a-i șterge conținutul de pe disc:
$ git restore --staged .env.local

# 2. Am stricat fișierul utils.js și vrem să revenim la versiunea curată din ultimul commit:
$ git restore src/utils.js

Rezultat & Impact

Fișierele sunt restaurate curat cu o sintaxă modernă, intuitivă și sigură.

Greșeli frecvente și bune practici

  • Rularea `git restore .` fără a conștientiza că modificările nesalvate (uncommitted) din fișierele urmărite vor fi pierdute ireversibil.
  • Confundarea `git restore` cu ștergerea fișierelor noi ne-urmărite (`untracked files`); pentru fișiere noi care nu au fost niciodată adăugate în Git se folosește `git clean`.

Ghiduri și noțiuni înrudite