Recuperarea din greșeli
Toată lumea strică ceva în Git la un moment dat: commit greșit, fișier șters, branch abandonat, „am dat push la ce nu trebuia". Vestea bună: aproape orice se poate recupera, pentru că Git păstrează totul. Lecția asta e trusa de prim ajutor.
Anulează modificări nesalvate
git restore fisier.php # revii la ultima versiune commitată
git restore . # tot (ATENȚIE: pierzi modificările necomise)
git stash # pui modificările deoparte temporar
git stash pop # le aduci înapoiAnulează ultimul commit
# păstrează modificările, doar desface commit-ul:
git reset --soft HEAD~1
# desface commit-ul ȘI staging-ul (modificările rămân în fișiere):
git reset HEAD~1
# șterge complet ultimul commit și modificările lui (periculos):
git reset --hard HEAD~1Repară mesajul ultimului commit
git commit --amend -m "Mesaj corect"
# doar dacă NU ai împins încă commit-ulAm dat push la ceva greșit
# NU folosi reset --hard + push --force pe un branch comun.
# În schimb, un commit care anulează schimbarea:
git revert <hash-commit>
# creează un commit nou care inversează exact acele modificăriRecuperează ceva „pierdut"
git reflog
# vezi TOT ce ai făcut: fiecare commit, checkout, reset, merge
# găsești hash-ul stării bune și:
git reset --hard <hash> # sau: git checkout -b recuperare <hash>„Am șters din greșeală un branch neîmbinat"
git reflog # cauți linia cu ultimul commit al branch-ului șters, ex: a1b2c3d git switch -c branch-recuperat a1b2c3d # gata, branch-ul e înapoi cu tot cu commit-uri
Exercițiu
Exersează în siguranță pe un repo de test: (1) fă un commit, apoi git reset --soft HEAD~1 și verifică că modificările rămân. (2) șterge un branch și recuperează-l din git reflog. (3) fă git revert la un commit și observă commit-ul de anulare.
Greșeli frecvente
- git reset --hard fără să realizezi că pierzi modificări necomise definitiv.
- push --force pe un branch comun ca să „repari" — strici pentru toți.
- --amend la un commit deja împins și folosit de alții.
- Nu știi de git reflog și crezi că ai pierdut munca pentru totdeauna.
De reținut
- restore/stash pentru modificări nesalvate.
- reset --soft/--mixed/--hard pentru a desface commit-uri locale.
- revert (nu reset+force) pentru a anula ceva deja împins.
- reflog e plasa de siguranță — aproape nimic nu se pierde definitiv.
Pe scurt
Git păstrează aproape tot. Cu restore, reset, revert și mai ales reflog, majoritatea „dezastrelor" se rezolvă în câteva comenzi.