git stash în Git

Salvează temporar modificările neterminate pe o stivă privată și lasă directorul de lucru curat.

Sintaxă comandă
git stash [subcomandă] [opțiuni]

Ce face git stash

Comanda git stash este salvatoare când ești în mijlocul scrierii unei funcționalități noi și trebuie să schimbi urgent ramura (de exemplu pentru a rezolva un bug critic în producție), dar codul tău nu este încă gata pentru a face un commit.

Ia toate modificările tale locale și le pune ‘la sertar’ (pe o stivă de tip LIFO). Directorul tău devine curat, identic cu ultimul commit. Când termini urgența, revii pe ramură și restaurezi modificările cu git stash pop.

Opțiuni și argumente

Opțiune / Parametru Descriere
push -m MESAJ Salvează modificările curente pe stivă adăugând un mesaj descriptiv (util dacă ai mai multe stash-uri).
pop Reaplică cel mai recent stash din stivă peste directorul de lucru și îl șterge din listă.
apply Reaplică cel mai recent stash dar îl PĂSTREAZĂ în stivă (util pentru aplicare pe mai multe ramuri).
list Afișează lista tuturor stash-urilor salvate în depozit.
drop [ID] Șterge un stash specific din listă (ex. git stash drop stash@{0}).
clear Șterge complet toate stash-urile din depozit.
-u, --include-untracked Include în stash și fișierele nou create care nu sunt încă urmărite de Git.

Exemple

Exemplul 1: Salvarea și recuperarea modificărilor

Punem deoparte modificările, lăsând directorul curat, apoi le readucem cu pop.

git init -b main demo_stash >/dev/null
cd demo_stash
git config user.name "Test" && git config user.email "test@exemplu.ro"
echo "linie veche" > fisier.txt && git add fisier.txt && git commit -m "init" >/dev/null
echo "lucru neterminat" >> fisier.txt
git stash -m "In lucru la functia X" >/dev/null
git status -s
git stash pop >/dev/null
cat fisier.txt

Rezultat

linie veche
lucru neterminat

Greșeli frecvente

  • Uitarea faptului că git stash implicit NU include fișierele noi (untracked); dacă ai creat fișiere noi, folosește git stash -u.
  • Acumularea a zeci de stash-uri uitate pe care nu le mai recunoști (verifică periodic lista cu git stash list).

Comenzi înrudite

  • git switch: Comută pe o altă ramură sau creează și trece pe o ramură nouă.
  • git restore: Restaurează fișierele din directorul de lucru sau scoate modificările din zona de staging.
  • git reset: Mută indicatorul ramurii curente (HEAD) la un commit anterior și ajustează staging-ul sau fișierele locale.