Git & GitHub
De ce avem nevoie de Git si GitHub?
Atunci cand lucrezi la un proiect, poti avea doua probleme:
- daca lucrezi la proiect in echipa, atunci ar fi util sa tii evidenta modificarilor facute de fiecare membru si sa poti sa distribui codul si modificarile in mod eficient
- istoricul versiunilor pentru intregul proiect si pentru fiecare fisier astfel incat sa poti reveni la o versiune anterioara a codului. De asemenea, vrei sa ai libertatea de a experimenta cu noi functionalitati fara sa iti faci griji ca vei strica ceva.
Ce este Git?
- Git este un VCS (version control system), ce are ca scop mentinerea evidentei schimbarilor codului sursa
- Git este folosit pentru a urmari modificarile in codul sursa, permitand mai multor programatori sa lucreze impreuna
Sunt Git si GitHub acelasi lucru?
- Nu, GitHub este o platforma web care foloseste Git pentru versionarea codului
- GitHub ofera, de asemena, functionalitati in plus, cum ar fi: un sistem de tichete, pull request-uri si wiki-uri pentru fiecare proiect
Alternative ale GitHub
Exista cateva alternative pentru GitHub, precum:
- GitLab
- Bitbucket
- SourceForge
- AWS CodeCommit
- Azure Repos
Acestea au acelasi scop, dar au diferite functionalitati si preturi. GitHub este cea mai populara solutie si de aceea acest webinar se va concentra pe el.
Creearea unui cont pe GitHub
- Iti poti crea un cont pe pagina: https://github.com/signup
GitHub repositories
- Un repository contine toate fisierele proiectului tau, si fiecare versiune a acestora
- Un repository poate contine mai multe branch-uri si de obicei are mai multi contributori
Repository branches
- Branch-urile permit programatorilor sa creeze functionalitati, sa repare bug-uri sau sa experimenteze idei noi intr-o zona separata a repository-ului
- Un branch poate fi creat dintr-un branch existent, de obicei noi branch-uri sunt create din branch-ul default al repository-ului
Merging branches
- Merging-ul preia continutul unui branch sursa si il integreaza cu branch-ul tinta. In acest proces, doar branch-ul tinta este modificat. Istoricul branch-ului sursa ramane acelasi
Pull requests
- Un pull request este un eveniment care are loc atunci cand un programator este gata sa inceapa procesul de integrare a noilor schimbari de cod cu branch-ul principal al proiectului. Dupa o revizuire de la colegi, pull request-ul va fi aprobat sau nu. Daca este aprobat, atunci poate fi integrat cu branch-ul principal al proiectului. Daca nu, autorul trebuie sa faca modificarile cerute si asa mai departe.
CI/CD
- Continuous Integration (CI) este o practica de dezvoltare care impune programatorilor sa integreze codul intr-un repository comun de mai multe ori pe zi. Fiecare commit este apoi verificat de niste comenzi predefinite, intr-un pipeline, permitand echipelor sa detecteze problemele devreme
- Continuous Deployment (CD) este o strategie pentru lansarea de software, in care orice commit care trece de faza de testare automata este lansat automat in mediul de productie
- CD este numit Continuous Deployment cand procesul de lansare este complet automat si Continuous Delivery cand build-ul este automat dar lansarea este manuala (cineva trebuie sa apese un buton pentru a lansa codul)
- GitHub Actions este un tool de CI/CD integrat cu GitHub care iti permite sa automatizezi, sa personalizezi si sa rulezi fluxurile de lucru ale dezvoltarii software direct in repository-ul tau. Acesta este un alt beneficiu al folosirii unei platforme de control al codului sursa precum GitHub. (Exista si alte tool-uri de CI/CD, precum Jenkins, Travis CI, CircleCI, etc)