Git Hub si Git
Cred ca este bine sa incepeti sa utilizati Git, cit mai devreme, pentru a intelege mai bine si mai repede, avantajele si modul de lucru. Voi începe prin a explica câteva informații generale, despre instrumentele de control al versiunilor, apoi vom trece la modul în care Git rulează pe sistemul dumneavoastra.
Diferența dintre GitHub și Git poate crea confuzie la început, dar este destul de simplă.
Git este un instrument care permite dezvoltatorilor să își gestioneze codul. Când utilizați git, creați un istoric cu toate modificările pe care le aduceți codului dvs., care este într-adevăr puternic, mai ales atunci când lucrați la un proiect cu alții sau trebuie să vă întoarceți la versiuni anterioare ale codului.
GitHub este pur și simplu unul dintre numeroasele site-uri web unde puteți publica depozite de cod. Există multe altele precum GitLabs și BitBucket, dar pentru acest curs, vom folosi GitHub.
Concepte
-
VCS - Version Control Software,
-
SCM - Software Control Management,
-
SCM - Source Code Management,
-
Repository(Repo) - baza de date/imagine/colectie de fisiere din proiect/depozit(colectie) de fisiere,
-
Git status - verificarea starii unui depozit Git,
-
Staged - pregatirea fisierelor pentru commit,
-
Clone - cloneaza un repository aflat pe server(remote),
-
Branch - imagine locala a proiectului. Permite lucrul pe versiuni paralele fara a afecta imaginea principala a proiectului,
-
Commit - salvare modificări pe server.
-
.gitignore - În mod implicit, fișierul .gitignore nu este adăugat la un depozit. Fișierul .gitignore este folosit de Git pentru a ignora fișierele pe care nu le doriți în repository, de exemplu: imagini, fisiere video, fișiere generate la compilare, fișiere private, etc.
Sistemul de control al versiunii
Git este un sistem distribuit de control al versiunii (Version Control System - VCS) pentru gestionarea codului sursă.
Mai simplu spus, controlul versiunii este un sistem pentru urmărirea modificărilor aduse fișierelor. Pe măsură ce modificați fișierele, sistemul de control al versiunii înregistrează și salvează fiecare modificare.
Acest lucru vă permite să restaurați o versiune anterioară a codului în orice moment. Fără un sistem de control al versiunii, trebuie sa salvati manual mai multe versiuni ale fișierului sau fisierelor, folosind nume diferite (de exemplu, varianta-1-contact.php, varianta-2-contact.php). Această metodă necesită mult timp și practic, atunci când aveți de-a face cu sute de fișiere situatia devine extrem de complicata.
Git a fost dezvoltat de Linus Torvalds pentru a gestiona proiectul de dezvoltare a kernel-ului de Linux, in 2005.
De ce controlul versiunilor?
Principalele motive pentru care, Git este utilizat, sunt urmatoarele
- Proiectele software se dezvolta in regim colaborativ, codul fiind controlat de mai mulți programatori,
- Ofera o soluție de back-up, independent de mașina de dezvoltare folosita,
- Este o platforma care permite lucru colaborativ (fiecare lucreaza pe mașina locală si apoi modificările sunt încărcate in sistem pentru a fi disponibile tuturor membrilor echipei),
- Este o platforma care permite accesul la istoricul modificărilor,
- Astazi, toata lumea folosește o soluție de control al versiunii, companii precum Facebook, Google, Linkedin si multe altele.
Caracteristicile de baza ale Git
Sa vedem cele mai importante avantaje, ale utilizarii Git:
- Este un sistem distribuit,
- Toți utilizatorii au acces la istoricul modificărilor,
- Se poate lucra pe mașinile de dezvoltare in mod offline,
- Nu exista o autoritate centrala de control - toți au aceleași drepturi,
- Modificarile pot fi transmise si in mod P2P (peer-to-peer) fără a trece prin server,
- Este un sistem distribuit de control al versiunii (Distributed Version Control - DVC),
- Fișierele sunt urmărite prin verificarea hash-ului (SHA-1) acestora.
Instalarea, configurarea si utilizarea GIT
Creare cont Github
Pentru a face acest lucru, va trebui să configurați un cont GitHub și să instalați Git pe computer.
Trebuie să accesați: GitHub
După ce ați creat contul, reveniți și vom instala Git.
Acum, haideți să instalăm Git de la: git-scm.com/downloads
☞ Asigurați-vă că alegeți versiunea corectă pentru computerul dumneavoastra.
După ce ați instalat Git, îl puteți utiliza direct din linia de comandă. Acum, intelegeti de ce acest tutorial urmeaza dupa tutorialul: "Linia de comandă"
De asemenea, puteti instala Git si in versiunea GUI(interfata grafica), de la adresa: desktop.github.com
Pentru a utiliza Git, trebuie să deschideți "Command Prompt"(Windows). După ce ați deschis, puteți să tastați git și să apăsați Enter. Ar trebui să vedeți un mesaj care explică utilizarea Git în acest moment, dar nu ar trebui să vedeți un mesaj conform căruia Git nu există ca o comandă. În acest caz, poate fi necesar să încercați să instalați din nou Git.

Crearea unui proiect - metoda 1
Puteți utiliza această tehnică, atunci când începeți un proiect de la zero.
-
Creați un nou depozit pe github.com. Denumiti acest depozit cum doriti(eu am sa-l numesc: demo-git). Bifați caseta pentru a crea un fișier README,

-
Copiați URL-ul pentru clonă (https) din pagina depozitului de pe Github,

-
In terminal(Command Prompt), navigati in directorul in care doriti sa porniti proiectul(de exemplu: proiecte-web). Nu creati un folder pentru proiectul in sine! Procesul de clonare va crea automat acest folder,
-
Folosiți comanda git clone [url], asigurați-vă că lipiți link-ul copiat la pasul 2,

-
Depozitul ar trebui să fie clonat, iar acum ar trebui să aveți un folder nou, numit după depozitul de pe github.com. In directorul de lucru - proiecte-web, eu voi avea folderul nou creat: demo-git. Va trebui să schimbați directorul de lucru în acest folder, înainte de a rula orice comandă Git pe acesta.

Crearea unui proiect - metoda 2
Puteți utiliza această tehnică întotdeauna, dar este utilă mai ales atunci când aveți deja un folder de proiect pe computer pe care doriți să îl trimiteți la Github.
Din linia de comandă, trebuie să navigați într-un folder pe care doriți să-l utilizați pentru un anumit proiect.
Eu voi naviga in directorul "proiecte-web/proiect-2", astfel:
cd Desktop/proiecte-web/proiect-2
Folderul "proiect-2", este deocamdata doar un depozit(master repository) local, aflat pe calculatorul la care lucrez si in care am o serie de foldere si fisiere.
☞ Acest folder ar trebui să fie gol sau sa contina fisierele caracteristice
unui proiect web!
Nu folosiți desktopul sau rădăcina folderului Documente!
Prin ceea ce vom face in continuare, vom transforma acest depozit local, intr-un depozit remote(la distanta) numit si Origin/Master. Practic voi crea o copie a acestui proiect pe Git Hub si voi crea astfel o legatura intre cele doua proiecte.
Ambele proiecte se vor afla in ceea ce numim master branch(ramura principala).
Dupa cum veti vedea mai tirziu, se pot crea si alte ramuri ale aceluiasi proiect.
Pentru metoda 2, urmati pasii de mai jos:
-
Pe github.com, in contul dvs., creati un depozit nou, de preferat cu acelasi nume ca proiectul aflat pe computerul dvs.(in cazul meu: proiect-2). Aveti grija sa nu bifati "Initialize this repository with a README " sau .gitignore.

-
Copiati adresa URL din pagina repository-ului de pe Github.

-
In terminal, aveti grija sa navigati in directorul in care se afla fisierele proiectului(in cazul meu: proiect-2),

-
Executati comanda > git init, pentru a initializa Git in folderul unde se afla proiectul, astfel incit sa putem utiliza comenzi Git in folderul respectiv. Acest lucru va inițializa Git în acest folder, si va permite Git să înceapă urmărirea modificărilor pe care le faceți.

În acest moment, toate comenzile Git ar trebui să funcționeze. Vom executa acum, o serie de comenzi pentru a vedea statusul proiectului si pentru a urca fisierele pe server:
git status

In imaginea de mai sus, putem vedea listate cu rosu, o serie de foldere si fisiere, practic, continutul folderului "proiect-2".
Aceasta inseamna ca fisierele nu se afla pe server.
Pentru a pregati urcarea tuturor folderelor si fisierelor executam comanda:
git add --all

Acum daca verificam din nou statusul fisierelor, observam ca acestea sunt listate cu verde, ceea ce inseamna ca sunt "staged", adica sunt pregatite pentru a fi urcate pe server.

In continuare executam comanda git commit cu un mesaj:
git commit -m "proiectul a fost urcat pe server"
Mesajul are rolul de a ne aminti, ce modificari am adus fisierelor din proiectul nostru.

-
Acum vom utiliza comanda de adaugare de la distanta, git remote add [name] [url]. Inlocuiti [name] cu origin si [url], cu URL-ul proiectului, copiat de pe github, astfel:
git remote add origin https://github.com/niky48wd/proiect-2.git
apoi executam comanda:
git push --set-upstream origin master
Cele doua comenzi de mai sus, sunt executate o singura data, la crearea proiectului si au rolul de a crea o legătură între depozitul local și depozitul de la distanță de pe GitHub. Vom mai utiliza comanda simpla git push, dupa ce efectuam modificari la fisierele locale si dorim sa aplicam modificarile si la fisierele de pe server.

Acum, daca arunc o privire pe github.com, in contul meu, voi vedea ca proiectul-2 este urcat pe server, cu toate folderele si fisierele aferente.

Pentru a verifica daca totul este in regula execut din nou comanda git status:

De acum inainte voi putea lucra la proiectul local si voi actualiza proiectul remote, de fiecare data cind fisierele locale sunt modificate.
Fluxul de lucru - rutina zilnica
Atunci cind lucram cu Git, fisierele se pot afla in trei stari:
- Modified - modificate,
- Staged(git add) - pregatire pentru commit,
- Committed(git commit) - salvare modificări pe server.
Cele mai utilizate comenzi sunt urmatoarele:
git add . (fisierele modificate din directorul curent)
sau
git add --all (toate fisierele modificate)
sau
git add index.html (un fisier anume)
git commit -m "mesajul tău aici"
git push
Pentru exemplificarea fluxului de lucru am sa creez un fisier text - test.txt, in directorul proiect-2,
touch test.txt
git status
apoi verific daca fisierul a fost creat, deschid fisierul text local si adaug linia "# Prima linie de text" si execut comenzile:
git add --all
git status
git commit -m "am creat fisierul test.txt"
acum, deschid din nou fisierul text local si adaug linia "# A doua linie de text" si execut comenzile:
git status
git add --all
git status
git commit -m "am adaugat mai mult text"
In sfirsit, dupa ce am efectuat toate modificarile dorite in fisierul test.txt si doresc sa pastrez aceste modificari, nu-mi ramine decit sa aplic aceste modificari si fisierului de pe Github, folosind comanda:
git push
si apoi git status, pentru a vedea daca totul este in regula.

Retineti ca, tot ce am prezentat in acest tutorial, este minimul necesar, pe care trebuie să-l știți despre Git și GitHub în acest moment. Mai târziu, veți folosi Git, în scenarii mai avansate, precum ramificarea și contopirea, dar nu este momentul să vă faceți griji pentru asta.
Oricind puteti sa consultati documentatia Git la adresa: Git Documentation
