Sunteți pe pagina 1din 10

Ministerul Educației al R.M.

Universitatea Tehnică a Moldovei

Facultatea Calculatoare, Informatică și Microelectronică

Catedra Automatică și Tehnologii Informaționale

RAPORT

Lucrare de laborator nr. 1


la disciplina: Programarea în reţea

Tema: Versionarea codului sursă utilizînd Git

A efectuat: st. gr.TI-132 Postică Nicolae

Au verificat: lector universitar I. Antohi

Chișinau 2016
Scopul:
Lucrarea de laborator are ca scop studiul și înțelegerea principiilor de funcționare și
utilizare a sistemului distribuit de control al versiunilor numit GIT.

Sarcina

Crearea unui repozitoriu distant, localizat de serviciul gitlab.ati.utm.md, și sincronizarea


tuturor modificărilor efectuate asupra repozitoriului local.

Noţiuni teoretice

Sistemele de versionare (VCS, Version Control Systems - eng.) servesc la gestionarea


versiunilor multiple ale fișierelor incluse într-un proiect colaborativ. Fiecare modificare
efectuată asupra elementului de proiect se memorizează împreună cu autorului schimbării.
Important de menționat că în orice moment de timp se poate reveni la o versiune anterioară a
entității. Motivatia principala consta in posibilitatea ca diferiti membri ai echipei, aflati
eventual in spatii geografice indepartate, sa poata lucra simultan la proiect, urmand ca, la final,
modificarile lor sa fie reunite in noi versiuni ale proiectului. De asemenea, exista si alte
avantaje. Cand se observa un bug, se poate reveni la o versiune anterioara, in vederea
determinarii momentului introducerii acestuia in program. In acelasi timp, se poate urma o
dezvoltare pe ramuri (branches), in care se lucreaza, in paralel, la multiple versiuni ale
proiectului - de exemplu, una in care se doreste inlaturarea bug-urilor, iar cealalta, in care se
urmareste adaugarea de noi functionalitati, inaintea slefuirii celor existente.

Mersul lucrarii

Pentru a putea utiliza sistemul de versionare a codului Git este nevoie de a urma următorii
paşi:

1. Să se instaleze sistemul de control al vesiuni. Git - Downloads, https://git-for-


windows.github.io/
Figura 1 reprezintă fereastra de lucru în sistemul de versionare Git Bash

Fig.1 – Ferestra de lucru

1. Crearea şi adăugarea cheia publică generată cu ajutorul comenzii ssh-keygen.exe .

Figura 2 reprezintă imaginea cu cheia generata

Fig. 2 – Executarea comenzii ssh-keygen.exe

2. Crearea proiectului unui proiect nou în gitlab.ati.utm.md prezentată în Figura 3


Figura 3 reprezinta exemplu de craere a unui proiect nou

3. Urmează configurarea Git-ului cu setarile globale:

git config --global user.name ”Postică Nicoale”

git config --global user.email ”postica-nicoale@mail.ru”

4. Pentru a începe lucrul în, Git este nevoie de crea un director local în care se vor afla
fişierele de versiont. Comanda mkdir (name) crează în interiorul directorului mapa
cu denumirea indicată.

Crearea repozitoriului şi a mapei de lucru

Fig.4 – Crearea repozitoriului cu mapa din interior

5. Cu ajutorul comenzilor cd lab1, şi git init, se navighează, respectiv initializează


directorul, accesînd în felul acesta ramura de bază (master). Ramura (master) este
creată implicit.

Figura 5 reprezintă iniţializarea repozitoriului local


Fig.5 – Iniţializare repozitoriului si a mapei locale

Un conflict dintre 2 ramuri (branch) apare în momentul (merging branches). Fiind


generat de schimbările dintr-un document, in 2 comituri diferite şi ramuri diferite. Pentru a
genera conflictul am indeplinit următorii paşi:

1. Crearea unui fisier (test) prin comanda touch nume_fisier Am indexat fisierul dat,
comanda git add . . Prin intemediul comenzii git commit –m «1 commit» este comanda
care crează comiturile. Prin comit, în linii generale se subînţelege păstrarea stării
proiectului în repozitoriul local. Avantajul constiuie navigarea printre aceste stari şi
revenirea la oricare dintre ele.

Figura 6 reprezinta adăugarea fişierul creat si executarea comitului

Fig.6 - Adăugarea fișierului si creare comitului

2. Comanda git remote add origin git@gitlab.ati.utm.md:postica.nicolae/lab1.git,


adauga inregistrarile in repozitoriul distant. Reînoirea facîndu-se prin origin, ramura
master, git push –u origin master

Figura 7 reprezintă plasarea datelor pe repozitoriul distant

Fig.7 - Plasarea pe repozitoriul distant

Ceea ce se va afişa în momentul adăugării cu succes în repozitoriul distant.


Fig.8 - Repozitoriul distant

3. Prin intermediul comenzii git checkout –b new_branch se va crea a doua ramură.


Aici de asemena este fişierul test în care am introdus un text, comanda echo “git
dev” > test. La fel am creat commit-ul, adăugîindu-l mai apoi în repozitoriul
distant.

In figură este reprezent crearea unui nou branch

Fig.9 – Crearea branch

In figura 10 este Afişat în repozitoriu distant

Fig. 10 Afisarea branch-ului nou creat

4. Apoi trecem pe ramura iniţială master (comanda git checkout master), modificam
fisierul test și încărcăm modificările pe ropozitoriul distant.

În Figura 11 este reprezentată trecerea pe branch-ul principal şi modificarea datelor


din fisier
Fig.11 Trecerea în branch-ul master

5. Toate inscrierile le-am adaugat în repozitoriul distant, comanda git push -u origin
master

Fig.12 Repozitoriul distant

6. git merge dev (din master in cazul de faţă) are loc merging branch, ceea ce va
declanşa conflictul

Fig.13 Conflict

Prezenţa conflictului în fişier este vizualizata prin intermediul următoarelor simbolurilor:


<<<<<<HEAD marcheaza începutul sectiei cu conflict de pe ramura master

=========== sfirşitul secţie de conflitului în ramura master

>>>>>>>>>>dev sfirşitul secţie de pe ramura new_branch

În imaginea data este reprezentat conflictul din fişier


Fig.14 Conflictul în fisier m.txt

Pentru solutionare este necesar indeplinirea urmatorilor paşi:

1. Redactarea fişierul test prin excluderea simbolurilor reprezentante ale conflictului,


salvarea fisierul, indexarea (git add test), crearea comitului (git commit –m «...») şi
plasarea pe repozitoriul distant. (git push –u orgin master)

Rezolvarea conflictului este reprezentata in figurile de mai jos

Fig.14 Rezolvarea in fereastra pricipala Git

Fig.15 Afisarea rezolvarii conflictui in repozitoriul distant


Concluzie

În această lucrare de laborat am însușit modul de lucru cu sistemul de control al


versiunilor Git. Am creat un repozitoriu local și unul distant făcînd schimb de commit-uri între
ele prin instrucțiunea push Conform condiției am creat o două ramuri prin instrucțiunea git
checkout -b dev și le-am unit prin merge. De asemena am creat un conflict între ramuri pe care
l-am soluţionat. Efectuînd această lucrare de laborator am conștientizat importanța sistemelor
control a versiunelor, ele fiind un lucru indinspensabil pentru programatori.
Bibliografie

https://onlywei.github.io/explain-git-with-d3/
https://git-scm.com/book/ru/v1

Git: конфликты при слиянии [resursa electronica] regim acces -


http://wiki.unixforum.org/wiki/Git:_%D0%BA%D0%BE%D0%BD%D1%84%D0%BB%D0
%B8%D0%BA%D1%82%D1%8B_%D0%BF%D1%80%D0%B8_%D1%81%D0%BB%D0
%B8%D1%8F%D0%BD%D0%B8%D0%B8

How to: Create a git Merge Conflict [resursa electronica] regim acces -
http://jonathanmh.com/how-to-create-a-git-merge-conflict/

S-ar putea să vă placă și