Sari la conținut
Laptop cu un editor de cod deschis și un terminal, pe biroul unui student la informatică
Foto: KATRIN BOLOVTSOVA / Pexels
IT

Cum folosești Git ca să nu mai pierzi nicio versiune a proiectelor

Aproape fiecare student care a lucrat la un proiect de programare cunoaște scenariul. Pe desktop se adună fișiere cu nume tot mai disperate: „proiect_final”, „proiect_final_v2”, „proiect_final_bun”, „proiect_final_bun_acum_chiar_merge”. Într-o seară, o modificare făcută în grabă strică tot, iar versiunea care funcționa ieri nu mai poate fi găsită. Sau, la un proiect de echipă, doi colegi lucrează în același fișier, își trimit codul pe chat și, la final, nimeni nu mai știe care este varianta corectă.

Git rezolvă exact aceste probleme. Este un sistem de control al versiunilor, gratuit și folosit pe scară largă în industrie, care păstrează istoricul complet al proiectului tău și îți permite să revii oricând la o versiune anterioară. Pentru un student, a învăța Git devreme înseamnă mai puțin stres la proiecte, colaborare mai ușoară cu colegii și o abilitate pe care aproape orice angajator din IT o așteaptă. Ghidul de mai jos te ia de la zero și îți arată tot ce îți trebuie pentru proiectele de facultate.

Ce problemă rezolvă, de fapt, Git

Imaginează-ți un caiet în care, de fiecare dată când termini o etapă a proiectului, faci o fotografie a tuturor fișierelor și scrii lângă ea o notă scurtă: „am adăugat meniul principal” sau „am reparat calculul mediei”. Oricând, poți răsfoi caietul, poți vedea ce s-a schimbat de la o fotografie la alta și poți readuce proiectul exact în starea din orice moment. Asta face Git, doar că automat, eficient și fără să ocupe mult spațiu.

Pe lângă istoric, Git îți permite să lucrezi în paralel la mai multe variante ale proiectului și să le combini apoi, iar împreună cu o platformă de găzduire a codului face posibilă colaborarea simultană a mai multor oameni. Nu este un instrument doar pentru programatori experimentați. Îl poți folosi la primul proiect de laborator, la tema de la structuri de date sau chiar la lucrarea de licență scrisă într-un format text.

Conceptele de bază, explicate simplu

Depozitul

Depozitul, numit în engleză „repository”, este folderul proiectului tău, împreună cu întregul lui istoric. Când transformi un folder obișnuit într-un depozit Git, sistemul începe să urmărească toate modificările din el.

Commit-ul

Un commit este o „fotografie” a proiectului la un anumit moment, însoțită de un mesaj care descrie ce s-a schimbat. Proiectul tău devine, în timp, un șir de commit-uri, fiecare cu data, autorul și descrierea lui.

Ramura

O ramură este o linie separată de dezvoltare. Ramura principală conține versiunea stabilă, iar pe alte ramuri poți experimenta fără să o afectezi. Când experimentul reușește, îl unești cu ramura principală.

Depozitul la distanță

Este o copie a depozitului tău găzduită pe un server, de obicei pe o platformă dedicată codului. Îți servește drept copie de siguranță și ca punct comun de lucru pentru echipă.

Primii pași: instalare și primul depozit

Git se instalează gratuit pe orice sistem de operare, iar pe multe distribuții de Linux și pe unele calculatoare este deja prezent. După instalare, urmează pașii de mai jos, într-un terminal deschis în folderul proiectului:

  1. Configurează-ți identitatea cu comenzile git config –global user.name și git config –global user.email, urmate de numele și adresa ta. Se face o singură dată.
  2. Transformă folderul în depozit cu git init. Din acest moment, Git urmărește proiectul.
  3. Verifică starea cu git status, care îți arată fișierele noi sau modificate.
  4. Pregătește fișierele pentru salvare cu git add, urmat de numele fișierului sau de un punct pentru toate fișierele.
  5. Creează primul commit cu git commit -m, urmat de un mesaj între ghilimele, de exemplu „Structura inițială a proiectului”.

Dacă proiectul există deja pe o platformă online, de exemplu un schelet primit de la profesor, nu mai ai nevoie de git init. Folosești git clone, urmat de adresa depozitului, și primești o copie completă, cu tot istoricul.

Dacă preferi să nu lucrezi în terminal, majoritatea editoarelor de cod moderne au integrare cu Git, cu butoane pentru aceleași operații. Merită totuși să înveți comenzile de bază, pentru că te ajută să înțelegi ce se întâmplă în spate și te descurci pe orice calculator.

Fluxul de lucru de zi cu zi

Odată creat depozitul, ritmul de lucru devine simplu și repetitiv. Lucrezi la o funcționalitate, verifici că merge, apoi salvezi un commit. Regula de bază este să faci commit-uri mici și dese, fiecare legat de o singură schimbare logică. Un commit care spune „am adăugat validarea formularului” este mult mai util decât unul uriaș, la final de zi, intitulat „modificări”.

Mesajele de commit merită puțină atenție. Câteva reguli simple le fac utile:

  • Scrie la timpul prezent sau la imperativ și spune ce face schimbarea, nu cum te simțeai când ai făcut-o.
  • Păstrează prima linie scurtă, sub o frază, ca să fie ușor de citit în istoric.
  • Evită mesajele vagi, de tipul „update”, „fix” sau „gata”.
  • Dacă schimbarea e complexă, adaugă după prima linie câteva rânduri de explicație.

Pentru a vedea istoricul, folosește git log. Pentru a compara versiunea curentă cu ultima salvată, folosește git diff.

Cum revii la o versiune anterioară

Aici se vede adevărata valoare a istoricului. Dacă ai modificat un fișier și vrei să renunți la schimbările nesalvate, comanda git restore, urmată de numele fișierului, îl readuce la starea din ultimul commit. Dacă un commit deja salvat a introdus o eroare, git revert creează un commit nou, care anulează efectul celui problematic, fără să șteargă istoria. Este varianta cea mai sigură, mai ales într-un proiect de echipă. Există și comenzi mai radicale, care rescriu istoricul, dar pe acestea merită să le folosești abia după ce înțelegi bine cum funcționează Git, pentru că pot șterge munca altora.

Ramurile, sau cum experimentezi fără frică

Să presupunem că proiectul tău funcționează, dar vrei să încerci o idee nouă, de exemplu o altă metodă de sortare sau o interfață diferită. Fără Git, ai copia tot folderul. Cu Git, creezi o ramură nouă cu git branch, urmat de un nume sugestiv, și treci pe ea cu git switch. Lucrezi liniștit, faci commit-uri, iar ramura principală rămâne neatinsă.

Dacă ideea funcționează, revii pe ramura principală și unești modificările cu git merge. Dacă nu, pur și simplu abandonezi ramura. Această libertate schimbă felul în care lucrezi: nu mai ai teama că o încercare îndrăzneață îți va distruge proiectul cu o zi înainte de predare.

Git în proiectele de echipă

La proiectele de grup, Git devine indispensabil. Echipa folosește un depozit comun, găzduit pe o platformă online. Fiecare coleg își descarcă o copie, lucrează pe propria ramură și trimite modificările cu git push. Pentru a primi modificările celorlalți, folosește git pull.

Mai devreme sau mai târziu, vei întâlni un conflict: doi colegi au modificat aceeași linie din același fișier. Git nu ghicește care variantă e corectă, ci marchează locul și te lasă pe tine să alegi. Nu e o catastrofă, ci o situație obișnuită, care se rezolvă în câteva minute, mai ales dacă echipa face commit-uri mici și se sincronizează des. O regulă de aur pentru echipe este ca nimeni să nu lucreze direct pe ramura principală, iar modificările să fie revizuite de cel puțin un coleg înainte de unire.

Un obicei bun pentru orice proiect de echipă este un fișier README în rădăcina depozitului. În el scrieți pe scurt ce face proiectul, cum se instalează și se rulează, ce reguli de lucru a stabilit echipa și cine se ocupă de fiecare parte. Profesorul care evaluează proiectul va aprecia claritatea, iar colegii care se alătură mai târziu vor ști imediat de unde să înceapă.

Extensiile potrivite îți pot ușura munca pe platformele de cod, de la vizualizarea mai clară a fișierelor până la navigarea prin istoric. Câteva idei găsești în lista cu cele mai utile extensii de browser pentru studenții la Informatică.

Greșeli de evitat și bune obiceiuri

Câteva greșeli apar la aproape toți începătorii. Prima este salvarea în depozit a fișierelor care nu ar trebui să ajungă acolo: fișiere generate automat la compilare, dependențe descărcate, fișiere mari de date sau, mai grav, parole și chei de acces. Pentru a le exclude, creează în proiect un fișier numit .gitignore și trece în el tipurile de fișiere pe care Git trebuie să le ignore. Dacă o parolă a ajuns totuși într-un depozit public, consider-o compromisă și schimb-o imediat.

A doua greșeală este folosirea Git doar ca arhivă, cu un singur commit la final. Pierzi astfel exact avantajul principal, istoricul detaliat. A treia este lipsa unei copii la distanță. Un depozit care există doar pe laptopul tău dispare odată cu laptopul. Trimite-l periodic pe o platformă online, eventual privată, și combină asta cu o strategie mai largă de backup, de exemplu cu un serviciu de stocare în cloud gratuit pentru restul fișierelor de la facultate.

Git pare intimidant în prima săptămână, cu termenii lui în engleză și cu terminalul care nu iartă greșelile de scriere. După câteva proiecte, însă, devine un reflex, la fel de natural ca salvarea unui document. Începe cu un proiect mic, fă commit-uri dese, scrie mesaje clare și nu te teme să experimentezi pe ramuri. Peste un an, când vei lucra la licență sau la primul internship, vei fi recunoscător că ai început devreme.

Foto: KATRIN BOLOVTSOVA / Pexels