Sari la conținut
← Git & GitHub pentru developeri
Progres curs 0 / 7 lecții (0%)

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 înapoi

Anulează 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~1

Repară mesajul ultimului commit

git commit --amend -m "Mesaj corect"
# doar dacă NU ai împins încă commit-ul

Am 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ări

Recuperează 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.

Folosim cookie-uri esențiale pentru funcționarea site-ului și, cu acordul tău, cookie-uri de analiză și publicitate. Partenerii noștri, inclusiv Google, pot folosi cookie-uri pentru a afișa reclame relevante. Detalii în Politica de cookie-uri.