Git: bazele
Repo, commit, staging area, comenzile de zi cu zi și .gitignore.
Actualizat
Ce este Git
Git e un sistem de control al versiunilor: ține istoricul complet al proiectului — fiecare modificare, cine a făcut-o, când și de ce. Poți reveni oricând la o versiune anterioară, poți lucra în paralel cu alții și poți încerca idei fără să strici ce merge.
GitHub (sau GitLab) e un serviciu care găzduiește repository-uri Git online și adaugă colaborare: pull request-uri, review, CI. Git ≠ GitHub.
Conceptele de bază
| Termen | Ce este |
|---|---|
| repository (repo) | proiectul + tot istoricul lui (folderul ascuns .git) |
| commit | o „fotografie” a proiectului la un moment dat, cu un mesaj |
| branch | o linie de dezvoltare independentă (lecția următoare) |
| remote | copia repo-ului de pe server (origin) |
| HEAD | unde te afli acum în istoric |
Cele 3 zone
Git are trei „locuri” prin care trece o modificare:
working directoryfișierele talegit add→staging areace intră în commitgit commit→repositoryistoriculStaging area (index) te lasă să alegi exact ce intră în commit — poți modifica 5 fișiere și să faci două commit-uri separate, logice.
Comenzile de zi cu zi
| Comandă | Ce face |
|---|---|
git status |
ce s-a schimbat și ce e în staging — rulează-l des |
git diff |
modificările care nu sunt încă în staging |
git add <fișier> / git add -p |
pune în staging (tot fișierul / bucată cu bucată) |
git commit -m "mesaj" |
creează commit-ul |
git log --oneline |
istoricul, compact |
git pull |
aduce și integrează modificările de pe remote |
git push |
trimite commit-urile tale pe remote |
git restore <fișier> |
aruncă modificările necommit-uite dintr-un fișier |
git stash / git stash pop |
pune deoparte modificările temporar |
Un commit bun
- Mic și logic — o singură schimbare (un bug, un feature mic). Ușor de citit în review, ușor de anulat.
- Mesaj care spune de ce, nu doar ce: „fix: păstrează coșul după login” > „update”.
- Codul merge după fiecare commit (build-ul nu e stricat).
.gitignore
Fișierul .gitignore spune ce nu intră niciodată în Git:
node_modules/ # dependențele — se reinstalează din package-lock
.next/ # build-ul
.env* # SECRETE — niciodată în Git
*.log
.DS_Store
Dacă ai pus din greșeală un secret într-un commit și ai făcut push, consideră-l compromis: îl schimbi (rotești cheia), nu doar îl ștergi din cod.
Anularea greșelilor — tipuri și când
| Situație | Comandă |
|---|---|
| modificări necommit-uite într-un fișier | git restore fișier |
| ai pus ceva în staging din greșeală | git restore --staged fișier |
| ultimul commit are mesaj greșit / ai uitat un fișier (încă nu ai făcut push) | git commit --amend |
| anulezi un commit deja publicat | git revert <hash> — creează un commit nou, care face inversul |
| „am stricat tot local” | git reflog — istoricul tuturor pozițiilor HEAD, de unde poți recupera aproape orice |
Regula de aur: nu rescrie istoria publicată (amend, rebase, reset pe commit-uri deja împinse pe un branch comun).
Pe scurt
- Git = istoric de versiuni; GitHub = găzduire + colaborare.
- working directory →
add→ staging →commit→ istoric. - Commit-uri mici, logice, cu mesaje clare; secretele în
.gitignore.