SlideShare a Scribd company logo
WHAT IS GIT?
Săptămâna Europeană a Programării (EU Code Week)
17 octombrie 2015, Bălți
MODALITĂŢI AD-HOC DE CONTROL
AL VERSIUNILOR
(C) Sursa imaginii: www.phdcomics.com
MODALITĂȚI AD-HOC DE CONTROL
AL VERSIUNILOR
Care ar fi unele dezavantaje ale acestei metode?
Pot apărea complicații privind integritatea: dacă am vrut
să modific data_2010.05.28.dat, dar din greșeală am
modificat și am salvat data_2010.05.27.dat.
Nu permite lucrul colaborativ la unul și același fișier:
data_2010.05.27_radu.dat și data_2010.05.27_irina.dat
(cum să integrez modificările acestor fișiere în unul
singur?).
MODALITĂȚI AD-HOC DE CONTROL
AL VERSIUNILOR
   public int factorial(int n) 
   { 
     return n * factorial(n­1); 
   } 
 
MODALITĂȚI AD-HOC DE CONTROL
AL VERSIUNILOR
   public int factorial(int n) 
   { 
     if (n == 0) 
       return 1; 
     else 
       return n * factorial(n­1); 
   } 
 
MODALITĂȚI AD-HOC DE CONTROL
AL VERSIUNILOR
   public int factorial(int n) 
   { 
     if (n == 0) //+RD20151017 
       return 1; //+RD20151017 
     else        //+RD20151017 
       return n * factorial(n­1); 
   } 
 
MODALITĂȚI AD-HOC DE CONTROL
AL VERSIUNILOR
   public int factorial(int n) 
   { 
     //if (n == 0) //­RD20151018 
     if (n <= 0)   //+RD20151018 
       return 1;   //+RD20151017 
     else          //+RD20151017 
       return n * factorial(n­1); 
   } 
 
MODALITĂȚI AD-HOC DE CONTROL
AL VERSIUNILOR
Care ar fi unele dezavantaje ale acestei metode?
CONTROLUL VERSIUNILOR CU GIT
(C) Sursa imaginii: http://git-scm.com/book/en/v2/Getting-Started-Git-Basics#Snapshots,-Not-
Differences
GIT ESTE UN SISTEM DISTRIBUIT...
(C) Sursa imaginii: http://thepilcrow.net/explaining-basic-concepts-git-and-github/
... ȘI NU CENTRALIZAT
(C) Sursa imaginii: http://thepilcrow.net/explaining-basic-concepts-git-and-github/
FOARTE SCURT ISTORIC
Git îl are ca autor pe Linus Torvalds și a fost elaborat în 2005
cu scopul de a înlocui sistemul de control al versiunilor
folosit până atunci la dezvoltarea nucleului Linux.
relatează că
numărul de persoane implicate în dezvoltarea acestuia
variază între 5000 și 6000, iar numărul de linii de cod a
versiunii 3.10 în 2013 era 15,803,499.
Articolul din Wikipedia despre nucleul Linux
Nu știu care a fost motivul exact al alegerii numelui, dar în
slangul limbii engleze britanice „git” înseamnă „persoană
neplăcută” („unpleasant person”).
SITURI WEB CARE OFERĂ GIT
INSTALARE GIT
Într-un sistem GNU/Linux bazat pe Debian:
Pentru Mac OS X, Windows, Linux și Solaris:
doar pentru lucru în linia de comandă (fără interfață
grafică):
cu interfață grafică
$ sudo apt­get install git
http://git-scm.com/downloads
https://git-scm.com/downloads/guis
sau
Formatul general:
CREAREA UNUI PROIECT GIT NOU
  $ git init git­workshop 
  $ cd git­workshop 
   $ mkdir git­workshop 
   $ cd git­workshop 
   $ git init 
 
  $ git init [dosar] 
Puteți executa acestă comandă de câte ori doriți pe un
proiect deja existent.
CREAREA UNUI PROIECT GIT NOU
Nu uităm să specificăm autorul proiectului și ulterioarelor
modificări:
      $ git config user.name "Numele dvs." 
      $ git config user.email "posta@example.com" 
      
DOSARUL GIT, INDEX-UL ȘI DOSARUL
DE LUCRU
Toate versiunile proiectului sunt stocate în dosarul git (git
dir).
Versiunea actuală a proiectului (nememorizată) se află în
dosarul de lucru (work dir).
Versiunea care urmează să fie memorată se află în index
(stage sau index).
O metaforă: dosarul de lucru este prezentul, dosarul git -
trecutul, iar index-ul - este clipa între prezent și trecut.
PRIMUL FIȘIER ÎN PROIECT
      $ touch README 
      $ echo 'Primul proiect folosind Git' > README 
      $ git status 
      
PRIMUL FIȘIER ÎN PROIECT
      $ git add README 
      $ git status 
      
PRIMUL FIȘIER ÎN PROIECT
      $ git commit ­m 'Adăugarea descrierii proiectului' 
      $ git status 
      
PRIMUL FIȘIER ÎN PROIECT
      $ echo 'Autor: Radu D.' >> README 
      $ git status 
      
      $ git add README 
      $ git commit ­m 'Adăugarea numelui autorului' 
      
DOSARUL GIT, INDEX-UL ȘI DOSARUL
DE LUCRU
Git Dir Stage Work Dir
README
DOSARUL GIT, INDEX-UL ȘI DOSARUL
DE LUCRU
după comanda git add README avem:
Git Dir Stage Work Dir
README README
DOSARUL GIT, INDEX-UL ȘI DOSARUL
DE LUCRU
după comanda git commit -m avem:
Git Dir Stage Work Dir
README README README
sau
O PRIVIRE ASUPRA ISTORIEI
PROIECTULUI
Vizualizarea tuturor versiunilor proiectului
      $ git log 
      
sau
      $ git log ­­oneline 
      
      $ git log ­­oneline ­­name­only 
      
O PRIVIRE ASUPRA ISTORIEI
PROIECTULUI
Vizualizarea conținutului fișierului dintr-o versiune
      $ git show <versiune>:README 
      
Vizualizrea autorilor care au lucrat la un fișier per rând
      $ git blame README 
      
ÎNCĂRCĂM PROIECTUL PE GITHUB
1. Treceți pe pagina .
2. Creați-vă un cont folosind butonul Sign up (colțul
dreapta-sus).
3. Creați un proiect nou cu numele git-workshop folosind
butonul cu simbolul „+” apoi „New repository” (colțul
dreapta-sus).
https://github.com/
ÎNCĂRCĂM PROIECTUL PE GITHUB
4. Reveniți în linia de comandă la proiectul local și
5. Treceți pe pagina https://github.com/<utilizator>/git-
workshop și începeți să investigați posibilitățile interfeței situ
GitHub.
        $ git remote add origin https://github.com/<utilizator>/git­works
        $ git push ­u origin master 
        
ULTIMUL EXERCIȚIU
1. Treceți pe pagina
.
2. Preluați proiectul folosind butonul Fork (colțul dreapta-
sus).
3. Clonați proiectul local
4. Adăugați un comentariu despre atelier în fișierul
feedback.html conform modelului.
https://github.com/vundicind/code-
week
        $ git clone https://github.com/<utilizator>/code­week.git 
        
ULTIMUL EXERCIȚIU
5. Comiteți și încărcați modificările pe server
6. Treceți înapoi pe GitHub și folosind butonul „Compare,
review, create a pull request” (butonul verde din stânga
denumirii selectorului de ramură) creați o cerere de
integrare a schimbărilor în proiectul părinte (butonul
„Create pull request”).
        $ git commit ­a 
        $ git push origin master 
        
Eu la rândul meu:
ULTIMUL EXERCIȚIU
1. voi accepta toate cererile
2. și voi integra ramura master în ramura gh-pages pentru
ca schimbările să fie vizibile pe
http://vundicind.github.io/code-week
Vă mulțumesc!
Sper că va plăcut acest atelier și că plăcerea >= plăcerea pe
care am avut-o pregătindu-mă de acest atelier.
Câteva legături către materiale elaborate de mine:
Sursele acestei prezentări
Întrebări frecvente legate de Git
Traducerea în română a tutorialului de pe http://git-
lectures.github.io/
Alte materile în română:
http://blog.infoeducatie.ro/tutorial/2015/04/14/github-
101.html
http://rolisz.ro/2011/06/24/git-tutorial/

More Related Content

Similar to What is git?

Webpack
Webpack Webpack
Webpack
Dmitrii Stoian
 
Qt Application Development
Qt Application DevelopmentQt Application Development
Qt Application Development
Dragos Tudor Acostachioaie
 
Curs Visual c++
Curs Visual c++Curs Visual c++
Curs Visual c++
Apolo Apolo
 
Curs C++
Curs C++Curs C++
Curs C++
Apolo Apolo
 
baze c++sructura unui program declarare variabilepdf.
baze c++sructura unui program declarare variabilepdf.baze c++sructura unui program declarare variabilepdf.
baze c++sructura unui program declarare variabilepdf.
AdrianaDanielaCupsa
 
Instalare si administrare site grid
Instalare si administrare site gridInstalare si administrare site grid
Instalare si administrare site grid
alexstanciu
 
Presentation
PresentationPresentation
Presentationraloo19
 

Similar to What is git? (7)

Webpack
Webpack Webpack
Webpack
 
Qt Application Development
Qt Application DevelopmentQt Application Development
Qt Application Development
 
Curs Visual c++
Curs Visual c++Curs Visual c++
Curs Visual c++
 
Curs C++
Curs C++Curs C++
Curs C++
 
baze c++sructura unui program declarare variabilepdf.
baze c++sructura unui program declarare variabilepdf.baze c++sructura unui program declarare variabilepdf.
baze c++sructura unui program declarare variabilepdf.
 
Instalare si administrare site grid
Instalare si administrare site gridInstalare si administrare site grid
Instalare si administrare site grid
 
Presentation
PresentationPresentation
Presentation
 

More from Radu Dumbrăveanu

Structuri discrete - Curs1: Mulțimi
Structuri discrete - Curs1: MulțimiStructuri discrete - Curs1: Mulțimi
Structuri discrete - Curs1: Mulțimi
Radu Dumbrăveanu
 
Curs 6: Cuplaje; Factorizări
Curs 6: Cuplaje; FactorizăriCurs 6: Cuplaje; Factorizări
Curs 6: Cuplaje; FactorizăriRadu Dumbrăveanu
 
Curs 1: Grafuri; Introducere
Curs 1: Grafuri; IntroducereCurs 1: Grafuri; Introducere
Curs 1: Grafuri; IntroducereRadu Dumbrăveanu
 
GNU Parallel și GNU Stow
GNU Parallel și GNU StowGNU Parallel și GNU Stow
GNU Parallel și GNU Stow
Radu Dumbrăveanu
 
Metode de autentificare în moodle
Metode de autentificare în moodleMetode de autentificare în moodle
Metode de autentificare în moodleRadu Dumbrăveanu
 
Experiences of Moodle Administration
Experiences of Moodle AdministrationExperiences of Moodle Administration
Experiences of Moodle AdministrationRadu Dumbrăveanu
 
Presentation
PresentationPresentation
Presentation
Radu Dumbrăveanu
 

More from Radu Dumbrăveanu (9)

Structuri discrete - Curs1: Mulțimi
Structuri discrete - Curs1: MulțimiStructuri discrete - Curs1: Mulțimi
Structuri discrete - Curs1: Mulțimi
 
Curs 9: Grafuri orientate
Curs 9: Grafuri orientateCurs 9: Grafuri orientate
Curs 9: Grafuri orientate
 
Curs 6: Cuplaje; Factorizări
Curs 6: Cuplaje; FactorizăriCurs 6: Cuplaje; Factorizări
Curs 6: Cuplaje; Factorizări
 
Curs 4: Arbori
Curs 4: ArboriCurs 4: Arbori
Curs 4: Arbori
 
Curs 1: Grafuri; Introducere
Curs 1: Grafuri; IntroducereCurs 1: Grafuri; Introducere
Curs 1: Grafuri; Introducere
 
GNU Parallel și GNU Stow
GNU Parallel și GNU StowGNU Parallel și GNU Stow
GNU Parallel și GNU Stow
 
Metode de autentificare în moodle
Metode de autentificare în moodleMetode de autentificare în moodle
Metode de autentificare în moodle
 
Experiences of Moodle Administration
Experiences of Moodle AdministrationExperiences of Moodle Administration
Experiences of Moodle Administration
 
Presentation
PresentationPresentation
Presentation
 

What is git?

  • 1. WHAT IS GIT? Săptămâna Europeană a Programării (EU Code Week) 17 octombrie 2015, Bălți
  • 2. MODALITĂŢI AD-HOC DE CONTROL AL VERSIUNILOR (C) Sursa imaginii: www.phdcomics.com
  • 3. MODALITĂȚI AD-HOC DE CONTROL AL VERSIUNILOR Care ar fi unele dezavantaje ale acestei metode? Pot apărea complicații privind integritatea: dacă am vrut să modific data_2010.05.28.dat, dar din greșeală am modificat și am salvat data_2010.05.27.dat. Nu permite lucrul colaborativ la unul și același fișier: data_2010.05.27_radu.dat și data_2010.05.27_irina.dat (cum să integrez modificările acestor fișiere în unul singur?).
  • 4. MODALITĂȚI AD-HOC DE CONTROL AL VERSIUNILOR    public int factorial(int n)     {       return n * factorial(n­1);     }   
  • 5. MODALITĂȚI AD-HOC DE CONTROL AL VERSIUNILOR    public int factorial(int n)     {       if (n == 0)         return 1;       else         return n * factorial(n­1);     }   
  • 6. MODALITĂȚI AD-HOC DE CONTROL AL VERSIUNILOR    public int factorial(int n)     {       if (n == 0) //+RD20151017         return 1; //+RD20151017       else        //+RD20151017         return n * factorial(n­1);     }   
  • 7. MODALITĂȚI AD-HOC DE CONTROL AL VERSIUNILOR    public int factorial(int n)     {       //if (n == 0) //­RD20151018       if (n <= 0)   //+RD20151018         return 1;   //+RD20151017       else          //+RD20151017         return n * factorial(n­1);     }   
  • 8. MODALITĂȚI AD-HOC DE CONTROL AL VERSIUNILOR Care ar fi unele dezavantaje ale acestei metode?
  • 9. CONTROLUL VERSIUNILOR CU GIT (C) Sursa imaginii: http://git-scm.com/book/en/v2/Getting-Started-Git-Basics#Snapshots,-Not- Differences
  • 10. GIT ESTE UN SISTEM DISTRIBUIT... (C) Sursa imaginii: http://thepilcrow.net/explaining-basic-concepts-git-and-github/
  • 11. ... ȘI NU CENTRALIZAT (C) Sursa imaginii: http://thepilcrow.net/explaining-basic-concepts-git-and-github/
  • 12. FOARTE SCURT ISTORIC Git îl are ca autor pe Linus Torvalds și a fost elaborat în 2005 cu scopul de a înlocui sistemul de control al versiunilor folosit până atunci la dezvoltarea nucleului Linux. relatează că numărul de persoane implicate în dezvoltarea acestuia variază între 5000 și 6000, iar numărul de linii de cod a versiunii 3.10 în 2013 era 15,803,499. Articolul din Wikipedia despre nucleul Linux Nu știu care a fost motivul exact al alegerii numelui, dar în slangul limbii engleze britanice „git” înseamnă „persoană neplăcută” („unpleasant person”).
  • 13. SITURI WEB CARE OFERĂ GIT
  • 14. INSTALARE GIT Într-un sistem GNU/Linux bazat pe Debian: Pentru Mac OS X, Windows, Linux și Solaris: doar pentru lucru în linia de comandă (fără interfață grafică): cu interfață grafică $ sudo apt­get install git http://git-scm.com/downloads https://git-scm.com/downloads/guis
  • 15. sau Formatul general: CREAREA UNUI PROIECT GIT NOU   $ git init git­workshop    $ cd git­workshop     $ mkdir git­workshop     $ cd git­workshop     $ git init      $ git init [dosar]  Puteți executa acestă comandă de câte ori doriți pe un proiect deja existent.
  • 16. CREAREA UNUI PROIECT GIT NOU Nu uităm să specificăm autorul proiectului și ulterioarelor modificări:       $ git config user.name "Numele dvs."        $ git config user.email "posta@example.com"        
  • 17. DOSARUL GIT, INDEX-UL ȘI DOSARUL DE LUCRU Toate versiunile proiectului sunt stocate în dosarul git (git dir). Versiunea actuală a proiectului (nememorizată) se află în dosarul de lucru (work dir). Versiunea care urmează să fie memorată se află în index (stage sau index). O metaforă: dosarul de lucru este prezentul, dosarul git - trecutul, iar index-ul - este clipa între prezent și trecut.
  • 18. PRIMUL FIȘIER ÎN PROIECT       $ touch README        $ echo 'Primul proiect folosind Git' > README        $ git status        
  • 19. PRIMUL FIȘIER ÎN PROIECT       $ git add README        $ git status        
  • 20. PRIMUL FIȘIER ÎN PROIECT       $ git commit ­m 'Adăugarea descrierii proiectului'        $ git status        
  • 21. PRIMUL FIȘIER ÎN PROIECT       $ echo 'Autor: Radu D.' >> README        $ git status               $ git add README        $ git commit ­m 'Adăugarea numelui autorului'        
  • 22. DOSARUL GIT, INDEX-UL ȘI DOSARUL DE LUCRU Git Dir Stage Work Dir README
  • 23. DOSARUL GIT, INDEX-UL ȘI DOSARUL DE LUCRU după comanda git add README avem: Git Dir Stage Work Dir README README
  • 24. DOSARUL GIT, INDEX-UL ȘI DOSARUL DE LUCRU după comanda git commit -m avem: Git Dir Stage Work Dir README README README
  • 25. sau O PRIVIRE ASUPRA ISTORIEI PROIECTULUI Vizualizarea tuturor versiunilor proiectului       $ git log         sau       $ git log ­­oneline               $ git log ­­oneline ­­name­only        
  • 26. O PRIVIRE ASUPRA ISTORIEI PROIECTULUI Vizualizarea conținutului fișierului dintr-o versiune       $ git show <versiune>:README         Vizualizrea autorilor care au lucrat la un fișier per rând       $ git blame README        
  • 27. ÎNCĂRCĂM PROIECTUL PE GITHUB 1. Treceți pe pagina . 2. Creați-vă un cont folosind butonul Sign up (colțul dreapta-sus). 3. Creați un proiect nou cu numele git-workshop folosind butonul cu simbolul „+” apoi „New repository” (colțul dreapta-sus). https://github.com/
  • 28. ÎNCĂRCĂM PROIECTUL PE GITHUB 4. Reveniți în linia de comandă la proiectul local și 5. Treceți pe pagina https://github.com/<utilizator>/git- workshop și începeți să investigați posibilitățile interfeței situ GitHub.         $ git remote add origin https://github.com/<utilizator>/git­works         $ git push ­u origin master          
  • 29. ULTIMUL EXERCIȚIU 1. Treceți pe pagina . 2. Preluați proiectul folosind butonul Fork (colțul dreapta- sus). 3. Clonați proiectul local 4. Adăugați un comentariu despre atelier în fișierul feedback.html conform modelului. https://github.com/vundicind/code- week         $ git clone https://github.com/<utilizator>/code­week.git          
  • 30. ULTIMUL EXERCIȚIU 5. Comiteți și încărcați modificările pe server 6. Treceți înapoi pe GitHub și folosind butonul „Compare, review, create a pull request” (butonul verde din stânga denumirii selectorului de ramură) creați o cerere de integrare a schimbărilor în proiectul părinte (butonul „Create pull request”).         $ git commit ­a          $ git push origin master          
  • 31. Eu la rândul meu: ULTIMUL EXERCIȚIU 1. voi accepta toate cererile 2. și voi integra ramura master în ramura gh-pages pentru ca schimbările să fie vizibile pe http://vundicind.github.io/code-week
  • 32. Vă mulțumesc! Sper că va plăcut acest atelier și că plăcerea >= plăcerea pe care am avut-o pregătindu-mă de acest atelier. Câteva legături către materiale elaborate de mine: Sursele acestei prezentări Întrebări frecvente legate de Git Traducerea în română a tutorialului de pe http://git- lectures.github.io/ Alte materile în română: http://blog.infoeducatie.ro/tutorial/2015/04/14/github- 101.html http://rolisz.ro/2011/06/24/git-tutorial/