Sunteți pe pagina 1din 12

Ministerul Educaiei al Republicii Moldova

Universitatea Tehnic a Moldovei


Facultatea Calculatoare, Informatic i Microelectronic
Catedra Automatica i Tehnologii Informaionale

Raport
Disciplina: Programarea Aplicaiilor Distribuite
Tema:Repozitoriu Distribuit de Cod Surs

Laborator nr. 1

A efectuat: stud.grupei TI-111 Voloceai Petru

A verificat: lector superior Ciorb Dumitru

Chiinu 2014
Cuprins
1. Scopul lucrrii: ................................................................................................................ 3

2. Sarcina lucrrii: ................................................................................................................ 3

3. Noiuni teoretice................................................................................................................ 3
3.1 Scurt istoric............................................................................................................................... 3
3.2 Git i comenzile acestuia ........................................................................................................ 3

4. Realizarea lucrrii ............................................................................................................ 9


4.1 Setarea ....................................................................................................................................... 9
4.2 Crearea repozitoriului .........................................................................................................10
4.3 Adugarea fiierelor n repozitoriu ..................................................................................10
4.4 Create New Branch...............................................................................................................11

5. Concluzie ......................................................................................................................... 11

2
1. Scopul lucrrii:
Studierea si familiarizarea cu GIT;

2. Sarcina lucrrii:
Descriere complet a Git-ului, descrierea comenzilor de baz

3. Noiuni teoretice
3.1 Scurt istoric

Git este un sistem de controlul a versiunilor fiierilor, care ruleaz pe


majoritatea platformelor, inclusiv Linux, POSIX, Windows i OS X. Ca i Mercurial,
Git este un sistem distribuit i nu ntreine o baz de date comun. Este folosit n
echipe de dezvoltare mari, n care membrii echipei acioneaz oarecum independent i
sunt rspndii pe o arie geografic mare.n mod curet, Git este dezvoltat i ntreinut
de Junio Hamano.
Git este publicat sub licen GPL i este considerat software liber.Dintre
proiectele majore care folosesc Git amintim Amarok, Android, Arch Linux, Btrfs,
Debian, DragonFly BSD, Eclipse, Fedora, FFmpeg , GIMP, GNOME, GTK+, Hurd,
Linux kernel, Linux Mint, openSUSE, Perl, phpBB, Qt, rsync, Ruby on Rails, Samba.
Acest sistem a fost scris n limbajul C si ncorporat in sistemul de operare
UNIX.

3.2 Git i comenzile acestuia


Git este un sistem, care este foarte comod i important la crearea,/dezvoltarea
unui proiect, Acesta permite lucrul n echip asupra proiectelor mari, ceea ce usureaza
cu mult lucrul n grup. Avantajele acestuia sunt: n orice moment putei s v
ntoarcei la punctual de unde ati inceput, sau de la punctul, naintea efecturii erorii.
n orice moment de timp putei sa v intoarcei la versiunea precedent a proiectului.

3
Comenzi n git
git init
Comanda git init creaz un nou Git repozitoriu. Executnd git init acesta creaz o
submap .gitn rdcina de proiect, care conine toate datele necesare pentru
repozitoriu.

Folosire:
git init
Transform directoria curent n git repozitoriu. Acesta adaug mapa .git n
directoria curent i facem posibil inregistrarea revizuirii proiectului.

git init <directory>


Creaz un git repozitoriu gol n directoria specificat. Efectuarea acestei comenzi va
crea o map nou cu denumirea < directory> care nu conine nimic dect submapa
.git.

git clone
Comanda git clone copie Git repozitoriul existent.
Folosire:
git clone <repo>
Cloneaz repozitoriul locat n <repo> pe staia local. Repozitoriul iniial poate fi
locat pe sistemul local ori pe remote machine accesibil prin HTTP sau SSH.
git clone <repo><directory>
Cloneaz repozitoriul in <repo>n mapa cu denumirea <directory> pe maina local.
Este important de ineles ca ideea Git working copy este foarte diferit de copia de
lucru pe care o primii, prin verificarea codului de la SVN repozitoriu. Din pcate
SVN, Git nu face diferen dintre copia de lucru( woriking copy) si repozitoriul
central ei sunt pe deplin dezvoltat git repozitoriu.
Aceasta face colaborarea cu Git radical diferit dect SVN. Unde SVN depinde
de relaie dintre repozitoriul central i copia de lucru. Modelul de colaborarea Git este
bazat pe intereactiunea repository-to-repository. n loc de a verifica o copia de lucru
n repozitoriul central SVN, dumneavoastr facei push sau pull commits de la un
repozitroiu la altu.

4
Figura 1- Colaborarea dintre Central-Repo si Working-Copy

Bine neles c nimic nu v va stopa de la oferirea anumitor operaiuni repo Git cu


semnificaie special.

Figura 2 Colaborare Repo To - Repo


git config

5
Comanda git config va permite configurarea instalrii Git ( ori un repozitoriu
individual) din linia de comand. Aceast comand poate defeni orice de la informaia
utilizatorului la preferine pentru comportamentul repozitoriului.

Folosire:
git config user.name <name>
Definete numele autorului, care va fi folosit pentru toate commit-urile in repozitoriul
curent. Tipic, o s dorii s folosii --global flag pentru setarea configurarea
opiunilor pentru utilizatorul curent.
git config global user.name <name>
Definete numele autorului care va fi folosit pentru toate commit-urile de utilizatorul
curent.
git config global alias.<alias-name><git-command>
Creaz shortcut pentru comanda Git.
git config system core.editor <editor>
Definete un editor de text folosind comenzile ca, git commit pentru toi utilizatori pe
maina curent. Argumentul <editor>trebuie sa fie comanda care lanseaz editorul
dorit.
git config global edit
Deschide configurarea general a fiierului n editorul de text pentru editarea
manual.

git add
Comanda git add adaug modificrile in directoria de lucru n zona de ateptare.
Acesta spune lui Git c dorii sa includei nite modificri a fiierului n urmtorul
commit. Cu toate c git add nu prea afecteaz repozitoriul, modificrile nu sunt
defapt nregistrate pna ce nu lansai git commit. n legtur cu aceste comenzi, o s
avei nevoie de git status pentru vizulizarea strii directoriei de lucru si zonei de
ateptare.
Folosire:
git add <file>
Pune toate modificrile n <file> pentru urmtorul commit.
git add p

6
ncepe sesiunea interactiv de nregistrare care permite s alegei opiunea fiierului
pentru adugare la urmtorul commit.

git commit
Comanda git commit face un snapshot la proiect. nregistrrile nregistrate pot fi
gindite ca salvare a versiunii proiectului. Git niciodat nu le va modifica pn ce nu
o sa cerei n mod explicit.
Folosire:
git commite
nregistrarea snapshot-ului. Aceasta va lansa editorul de text unde trebuie sa
introduceti un comentariu.
git commit a
Face commit la toate modificrile care au fost facute n directoria de lucru.

Snapshots,Not Differences
n afar de distincii practice ntre SVN i Git, punerea lor n aplicare de baz
urmririle ,de asemenea filosofia de design cu totul diverge. ntruct SVN urmrete
diferenele de un fiier, modelul de control versiune Git se bazeaz pe snapshot. De
exemplu, un SVN commit const dintr-o diferen fa de fiierul original adugat n
repozitoriu. Git, pe de alt parte, nregistreaz ntregul coninut al fiecrui dosar n
fiecare commit.

Figura 5 nregistrarea diferenelor de fiiere (SVN)


Acest lucru face ca operaiunile Git mult mai rapide dect SVN, deoarece o anumit
versiune a unui fiier nu trebuie s fie "asamblate" de la diferena sa revizuirea

7
complet a fiecrui fiier este disponibil imediat din baza de date intern Git lui.

Figura 6 nregistrare Snapshot (Git)

Modelul Git snapshot are un impact de anvergur pe aproape fiecare aspect al


modelului de control al versiunilor, care afecteaz totul, de la branching i merge
tools la colaborarea dintre workflows.

Git status
Aceast comand afiseaz stare n care se afl repozitoriul. Acesta permite
vizualizarea fiierelor care au fost moficate sau la care trebuie de fcut commit.

Folosire:
git status
Afieaz care sunt puse n nregistrare, modificate, i neadugate.

git rebase
Rebasing v permite s v mutai branch n mprejur, care v ajut s evitai merge
commit inutile. Istoria liniar este de multe ori mult mai uor de neles i de cercetat.
Rebase, reia schimbrile de la o line de lucru i le pune n alta, n ordinea n
care ele au fost introduce, n timp ce merge,ea punctule finale si le unete.

8
Figura 7 - Rebase

Pericolele la folosirea Rebase


Nu trebuie s facei rebase la commit-uri care exist sunt n afara repozitoriului vostru.
Cnd facei rebase staff , voi abandonai commit-ul existent i creai una noua
similar, dar diferit. Dac facei push commits undeva i altcineva face pull la
commit-urile acestea i lucreaz la el ca material de baz, i atunci voi rescriei aceste
commit-urile cu git rebase i facei push la ele nc odat, atuci colegul vostru va fi
nevoit s fac remerge la lucrul su ( remerge their work) i atunci lucrurile vor sta
rau cnd voi o s ncercai s facei pull la proiectul lui n al vostru.

git stage
Comanda git stage adauga fiierul n zona de nregistrare. Este sinonim cu comanda
git add.

4. Realizarea lucrrii
4.1 Setarea
Pentru a incepe lucrul cu Git trebuie de urmat urmtorii trei pai:
1. trebuie de instalat Git pe calculatorului dumneavoastr.
2. dup care el trebuie s fie configurat folosind n Git comanda git config.

9
3. crearea repozitoriului pe calculatorul dumneavoastr.

4.2 Crearea repozitoriului


Pentru crearea repozitoriului trebuie n primul rnd s creai o map care va
conine o submapa cu denumirea .git n care se vor afla toate fiierele dumneavoastre
de repozitoriu necesare, aceasta reprezint un schelet al repozitoriului.
Dup trebuie sa initializai repozitoriul, adic creai un nou repozitoriu cu
ajutorul comandei git init, nainte de a iniializa, trebuie sa trecei n mapa n care
dorii sa creai repozitoriul din linia de comand.
Urmtorul pas pe care trebuie s-l facei ( nu este obligatoriu, dac dumneavoastr nu
aveti proiecte pe server) este s clonai repozitoriul de pe server.
Pentru aceasta trebuie s trecei n mapa care a so folosii pentru repozitoriu,
folosii comanda git clone[url], aceast comand face o copie a ntregului repozitoriu
de pe server, toate versiunile a tuturor fiierelor pentru istoria proiectului.

$git clone https://gitlab.ati.utm.md/petru.voloceai/projectvlc_1.git


Aceasta creaz o directorie cu numele projectvlc_1., iniializnd o directoriecu
numele .git .

4.3 Adugarea fiierelor n repozitoriu


Pentru adugarea fisierelor, trebuie s folosii comanda git add <file>,
git add first.txt
aceast comd i spune lui Git, c dumneavoastr dorii sa includeti updates pentru un
anumit fiier in urmtorul commit. n legtur cu aceast comand, dumneavoastr
avei nevoie de git status pentru vizualizarea a statutului a directoriei de lucru i a
zonei de asteptare.
Urmtorul pas care trebuie facut este inregistrarea fiierului adugat, aceasta se face
cu ajutorul comenzei git commit m <message>. Aceast comand va lansa un
editor de text, dac nu veti specifica tagul m, unde treubuie s introduceti un
comentariul la commit-ul dumneavoastr.

git commit m first commit


Comanda commit face ca un fel de creenshot la toate schimbrile in
directoria de lucru. Aceasta include doar moficrile doar pentru fisierele care au fost

10
adugate cu git add.
Ultimul lucru pe care trebuie sa-l facem este s transferm toate comiturile din
repozitoriul local pe repozitoriul central ( adic pe server ). Se efectueaz aceasta
operaie cu ajutorul comenzii git push <remote><branch>
git push origin master

4.4 Create New Branch


Pentru crearea unui nou branch vom folosi comanda git
branch<branch_name>
git branch future
Aceast comand creaz o nou ramur pentru dezvoltare unei noi tehnologii, dar
care nu trebuie sa fie aplic asupra proiectului la momentul de dezvotare. Atunci cnd
tehnologia noastr este dezvoltat cu succes si poate fi implimentat in proiectul
curent, atunci folosim comanda git merge <branch> pentru a uni tehnologia
dezvoltat de noi cu proiectul. Cnd face merge acesta va uni istoriile ramficate n una
singur. Aceast comad se folosete n mbinare cu comanda git checkout pentru
selectarea crengii curente (current branch).
Dea aceea pentru a efectua merge trebuie mai inti de toate sa facem
urmatorul lucru:
git checkout master
i doar dup aceasta sa facem merge
git merge user
Rezultatul final n urma efecturii comitului. A fost creat un new branch, a fost
efectuat un commit, dup care a fost efectuat comanda merge asupra branch master
care este ramura origine i user brach.

5. Concluzie
n urma efecturii acestei lucrri de laborator am fcut cunostin cu sitemul
Git, care este un sistem de gestiune a versiunilor fisierilor. Se folosete pentru a lucra
n grup asupra unui proiect la distan, avantajul su este c n orice moment putei sa
v intoarcei la versiune precedent a proiectului, sau s dezvoltai un serviciu
prototip fr a a-l integra in proiectul de baz, adic proiectul proiectul asupra cruia

11
lucreaz o echip intreag. Aceasta se face cu ajutorul comenziei git branch i care
ofer un lucru liber, sigur n dezvoltarea sau meninerea unui soft.

12