Emanuel Mares

Tech - Fotografie - Timp liber

Cum functioneaza version control cu Git si Github?

De cele mai multe ori un proiect devine laborios si greu de mentinut si pastrat un istoric. Desigur putem pastra mai multe copii ale unui fisier in functie de modificarile facute, ce contin si cand au fost facute. Exista totusi o moteda mai buna de version control decat ce manuala.

Ce este version control?

Version control ne ajuta sa pastram o mai buna organizare in fisierele noastre, ajuta la separarea modificarilor ce apar pe parcurs fie in mod manual sau automat. De asemenea ne ajuta sa vedem modificarile intre 2 versiuni sau 2 fisere.

Exista astfel metoda manuala, cea prin care se creaza copii ale unui fiser cand incepem un bloc nou de modificari. Acest procedeu scape usor de sub control si nu aduce o buna oraganizare pe termen lung. Pe de alta parta metoda automata, presupune ca modificarile se rescriu in fisier dar se pastreaza versiunile vechi pentru motive de erori. Cuvantul cheie aici este commit.

Git functioneaza in principiu, ca de altfel orice fel de program de version control, pe commituri. Adica un calup de modificari mai semnificative sau nu ale unuia sau mai multor fisiere, ce de obicei au legatura sau functioneaza in tandem. Deci fie ca am modificat 3 linii sau 100 pe diferite fisiere, acestea se grupeaza in commituri. De regula este recomandat sa se pastreze o anumita frecventa si complexitate pentru a face commituri, sa zicem cand am implementat o noua functionalitate sau a trecut un numar de minute/ore.

Alte pilonuri pentru Git sunt branchurile(ramuri). Ele sunt ramificatii de la un proiect initial cu scopul de a face o noua copie, cand avem de a face cu ceva functionalitate experimentala sau particica ce nu suntem siguri ca va functiona. Astfel prin a creea un branch ne este mai usor de a reveni la ceea ce functiona in cazul unor erori masive. Dar nu numai, le putem folosi si pentru teste si diferite inflorescente.

Deci putem face commituri, o mana de modificari grupate cu un scop, si branchuri in cazul in care se vor face mai multe commituri si se pierde urma veriunii curate in caz de teste.

Comenzi folositoare pentru Git

Cei de la Github va ofera un utilitar cu GUI pentru a modera proiectele voastre. Aici va voi da comenzile folositoare pentru git, la linia de comanda.

Initiere:

git clone <linkul unui proiect de pe github> //Clonati un proiect, adica veti face o copie locala a sa.

git init //Se face un nou proiect de la zero

Dupa ce ati intrat in folderul aferent proiectului(de obicei cd C:/Users/User/Documents/Github/numele proiectului) se poate continua cu urmatoarele comenzi.

Schimbari locale:

git status //Vedeti schimbarile fisierelor locale

git diff //Se pot vedea diferentele intre versiunea veche, cea nemodificata si cea modificata.

git add . //Se trimit toate fisierele modificate pentru a face un commit.

git add -p <nume fisier> //Se trimite un singur fisier pentru commit.

got commit -m <mesaj de descriere> //Se publica commitul cu o descriere.

Istoric:

git log //Se pot vedea toate modificarile.

git log -p <fisier> //Se salveaza istoricul intr-un fisier.

git blame <fisier> //Se poate vedea cine a facut modificarea.

Branche-uri, surse si update-uri:

git branch -av //Arata toate branch-urile.

git checkout <branch> //Se schimba branch-ul curent.

git branch <branch nou> //Se face un nou branch.

git branch -d <branch> //Se sterge un branch.

git remote -v //Se pot vedea sursele unui proiect.

git remote show <remote> //Se vad informatile unei surse.

git remote add <nume> <url> //Se poate adauga o alta sursa la distanta.

git fetch <remote> //Se preiau modificari din surse, fie remote sau origin.

git pull <remote> //Se iau modificarile dintr-o sursa si se integreaza automat in original.

git push <remote> <branch> //Se incarca commiturile locale catre o sursa.

git merge <branch> //Se includ modificarile dintr-un branch in branch-ul curent.

Anulare schimbari:

git reset --hard HEAD //Anuleaza toate schimbarile locale.

git checkout HEAD <nume fisier> //Se anuleaza schimbarile locale la un anumit fisier.

git revert <nr commit> //Se sterg modificarile unui commit printr-un alt commit ce reface oricinalul.

git reset --hard <nr commit> //Se sterg modificarile unui commit si se readuc fisierele vechi.

git reset --keep <nr commit> //Se sterg modificarile unui commit dar se pastreaza local acele modificari.

Pentru mai mult ajutor puteti folosi:

git help
Share