=Tutorial git= În acest tutorial se explică modul în care se importă un nou proiect in git, cum se modifică și cum se poate colabora asupra proiectelor. Este important să te prezinți înainte de a efectua orice operație, lucru care se face astfel: * git config --global user.name "Numele Tău" * git config --global user.email "Adresa ta de mail" ==Importarea unui proiect:== Fie următorul proiect care l-ai creat. Acesta se poate adăuga în git astfel: * tar xzf project.tar.gz * cd project * git init La rularea ultimei comenzi va apărea în folderul project următorul director ".git". Pentru a importa toate fișierele din folderul project se folosește următoarea comandă: * git add . Momentan aceste fișiere sunt temporar stocate in "index". Pentru a le adăuga permanent se utilizează: * git commit (se va deschide un fișier unde trebuie să fie decomentate evenimentele care se doresc a fi comise în git) ==Modificarea proiectelor== Pentru a modifica anumite fișiere se utilizeaza din nou comanda * git add file1 file2 file3 (unde file1, file2, file3 sunt noile fișiere) Pentru a vedea modificările se utilizează: * git diff --cached (dacă nu se utilizează --cached atunci sunt menționate schimbările care nu au fost adăugate în index) Pentru a vedea un rezumat a operațiilor efectuate se folosește: * git status După terminarea efectuării modificărilor se folosește iarăși: * git commit De asemenea în loc de "git add" și "git commit" se poate folosi "git commit -a" care va adăuga automat fișierele modificate. ==Istoria unui proiect== Pentru a vedea istoria unui proiect se utilizează următoarea comandă: * git log Pentru a vedea diferențele fiecărui pas se folosește: * git log -p O altă comandă folosită în acest scop este: * git log --stat --summary ==Gestionarea branșelor== Domeniul principal se numește master. Pentru a crea un nou domeniu se folosește: * git branch "Nume Domeniu" (exp: git branch experimental) Pentru a afișa domeniile se folosește: * git branch Pentru a schimba domeniul se utilizează: * git checkout experimental După ce se revine la master, cele două domenii se pot uni folosind: * git merge experimental (în caz că există diferențe între domenii apare un mesaj corespunzător) Pentru a șterge un domeniu se folosește: * git branch -d experimental (se efectuează în cazul în care diferențele sunt în domeniul curent) * git branch -D experimental (șterge domeniul fără a actualiza diferențele) ==Colaborare== Fie următoarea situație. Andreea are un proiect cu git repository în /home/andreea/project. Alex dorește să contribuie la acest proiect. Pentru a face acest lucru se folosește comanda: * git clone /home/alice/project myrepo Astfel se crează un nou director myrepo cu o copie a proiectului Andreei. După ce Alex face modificările, le comite("git commit -a") și o anunță pe Andreea de modificări, aceasta din urmă folosește următoarele comenzi pentru a salva modificările: * cd /home/andreea/project * git pull /home/alex/myrepo master În cazul în care Andreea a făcut schimbări între timp la proiect va trebui să rezolve conflictele manual. De asemnea Andreea poate inspecta ce a făcut Bob pentru a vedea dacă merită să salveze modificările sale. Acest lucru se face cu un simbol special "FETCH_HEAD": * git fetch /home/alex/myrepo master * git log -p HEAD..FETCH_HEAD În cazul în care Andreea și Alex lucrează împreună des asupra proiectului se poate folosi următoarele comenzi pentru a lucra mai ușor: * git remote add alex /home/alex/myrepo * git fetch alex Astfel se creează un domeniu separat în care se memorează modificările aduse de Alex. Pentru a vedea schimbările aduse se folosește comanda: * git log -p master..alex/master Salvarea modificărilor se face astfel: * git merge alex/master Acest lucru se mai poate face și astfel: * git pull . remotes/alex/master Pentru a actualiza repository-ul Andreei cu ultimile modificări, Alex folosește următoarea sintagmă: * git pull Nu mai e nevoie de toată calea întrucât aceasta a fost memorată prima oară. Această cale se poate vedea astfel: * git config --get remote.origin.url Se poate lucra și de pe alt host astfel: * git clone andreea.org:/home/andreea/project myrepo ==Exportarea proiectului pe http://swarm.cs.pub.ro/git/== Pentru a salva proiectele pe http://swarm.cs.pub.ro/git se creează următorul folder: //$HOME/git-repo//, loc unde utilizatorul va crea cate un folderul pentru fiecare proiect. Apoi va crea folderul .git in fiecare proiect. Dupa parcurgerea acestor pasi proiectele noi vor fi adaugate automat dupa o zi. Orice schimbari aduse unor proiecte deja aflate pe site sunt actualizate automat (doar prima initializare a unui proiect dureaza cel mult o zi in functie de serviciul cron). Pentru adaugare rapida a unui proiect nou se anunta un admin. ==Surse== Mai multe detalii se pot găsi la aceste surse: * http://cdl.rosedu.org/2010/cursuri/curs03 * http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html