====== Instalare Git ====== ===== Linux ===== De regulă, instalarea Git se face prin intermediul utilitarelor de gestiune a pachetelor incluse în distribuția Linux: * sisteme de tip Debian/Ubuntu\\ aipi2014@ubuntu:~$ sudo apt-get install git * sisteme de tip Fedora\\ aipi2014@ubuntu:~$ sudo yum install git Versiunea curentă este 1.9.1. ===== Windows ===== Se poate utiliza un client de tipul [[https://windows.github.com/|GitHub for Windows]], care este disponibil atât sub forma unei versiuni în linie de comandă (preferabil de utilizat) cât și a unei versiuni care conține o interfață grafică cu utilizatorul. Versiunea curentă este 2.4.1.2. ====== Crearea unui cont Github ===== - se accesează [[http://www.github.com|GitHub]] și se apasă butonul ''Sign up for GitHub'' completându-se informații precum numele de utilizator, adresa de poștă electronică și parola\\ {{ :utile:github01.jpg?nolink&700 }} - se alege planul tarifar implicit, gratuit, care nu oferă posibilitatea de creare de directoare private\\ {{ :utile:github02.jpg?nolink&700 }} - în panoul de administrare pot fi accesate mai multe legături către tutoriale pentru familiarizarea cu mediul GitHub; prin apăsarea butonului ''New Repository'' se poate crea o zonă de lucru corespunzătoare unui proiect\\ {{ :utile:github03.jpg?nolink&700 }} - crearea zonei de lucru implică specificarea unei denumiri, a unei descrieri (opțional), a tipului de director (public sau privat - doar contra cost!!!), a modului de inițializare (local, prin ''git init'' sau la distanță, prin ''git clone'' - ceea ce implică adăugarea unui fișier ''README''), a fișierelor ignorate (corespunzătoare limbajului de programare folosit) și a tipului de licență sub care este publicat codul sursă\\ {{ :utile:github04.jpg?nolink&700 }} La adresa de poștă electronică specificată, va fi transmisă legătura către pagina Internet pentru confirmarea validității acesteia (se apasă butonul ''Confirm''). {{ :utile:github05.jpg?nolink&700 }} ====== Configurare Git ====== Procesul de configurare Git presupune specificarea unor informații pentru **personalizarea** acestuia, precum și generarea / utilizarea unor **chei SSH** (preexistente) pentru autentificarea în cadrul directorului la distanță fără a fi implicate mecanisme de siguranță precum parolele. ===== Personalizare ===== Operațiile de personalizare se realizează prin intermediul utilitarului ''git config'' care este livrat împreună cu Git, prin intermediul căruia se stabilesc valorile variabilelor de configurare ce controlează aspecte ce țin de aspectul acestuia precum și de funcționalitatea sa. De regulă, astfel de operații se realizează o singură dată (sunt încărcate în mod automat atunci când sunt realizate actualizări ale sistemului), putând fi reluate însă în caz de necesitate. Există trei nivele de stocare a variabilelor de configurare, de la general la specific, în funcție de aplicabilitatea acestora: * pentru toți utilizatorii din cadrul sistemului de operare și pentru toate directoarele (//eng.// repository) acestora, dacă se folosește opțiunea ''%%--system%%'', acestea fiind reținute în ''/etc/gitconfig'' (pe sistemele Windows, acest fișier este relativ directorului în care s-a realizat instalarea) * pentru utilizatorul curent din cadrul sistemului de operare și pentru toate directoarele sale, dacă se folosește opțiunea ''%%--global%%'', acestea fiind reținute în ''~/.gitconfig'' (pe sistemele Windows, acest fișier este căutat în directorul ''%USERPROFILE%'') * pentru utilizatorul curent din cadrul sistemului de operare și pentru un anumit director, în ''.git/config'' asociat acestuia. În mod evident, valorile variabilelor de configurare de la un nivel mai specific le suprascriu pe cele de la un nivel mai general. Variabilele de configurare cel mai frecvent utilizate sunt: * legate de **identitatea** utilizatorului, importante datorită faptului că sunt incluse (în mod automat) în fiecare operație de consemnare\\ aipi2014@ubuntu:~$ git config --global user.name "Aplicatii Integrate pentru Intreprinderi 2014" aipi2014@ubuntu:~$ git config --global user.email aipi2014@andreirosucojocaru.ro * legate de **editorul de text** utilizat în mod implicit atunci când este necesară introducerea unui mesaj\\ aipi2014@ubuntu:~$ git config --global core.editor gedit * legate de **utilitarul pentru identificarea diferențelor**, utilizat pentru rezolvarea conflictelor\\ aipi2014@ubuntu:~$ git config --global merge.tool diff Valori acceptate sunt: ''vimdiff'', ''kdiff3'', ''tkdiff'', ''meld'', ''xxdiff'', ''emerge'', ''gvimdiff'', ''ecmerge'', ''opendiff'', dar și alte programe dezvoltate de utilizatori în acest scop. * legate de **aspect**: ''color.status'', ''color.branch'', ''color.interactive'', ''color.diff''. * legate de **alias-uri** (prescurtări) ale unor comenzi * git aipi2014@ubuntu:~$ git config --global alias.comm commit aipi2014@ubuntu:~$ git config --global alias.ustg 'reset HEAD --' aipi2014@ubuntu:~$ git config --global alias.last 'log -1 HEAD' * externe: trebuie precedate de caracterul ''!'' Valorile variabilelor de configurare pot fi verificate prin comanda: aipi2014@ubuntu:~$ git config --list Este posibil ca pentru o variabilă de configurare să fie afișate mai multe valori, în cazul în care acestea se regăsesc simultan în fișierele ''/etc/gitconfig'', ''~/.gitconfig'' respectiv ''.git/config'', situație în care este utilizată ultima valoare întâlnită, prin parcurgerea locațiilor în această ordine.\\ Verificarea valorii utilizate pentru o variabilă de configurare se face prin: aipi2014@ubuntu:~$ git config {configuration_variable} De asemenea, poate fi listat conținutul fișierelor de configurare, individual (folosind comanda ''cat'', de exemplu). ===== Chei SSH ===== Cheile SSH reprezintă un mecanism de identificare a mașinilor autorizate, fără a fi necesare parole. Acestea trebuie asociate în mod obligatoriu contului GitHub. - se verifică dacă pe mașina în cauză există deja chei SSH aipi2014@ubuntu:~$ ls -al ~/.ssh Dacă sunt listate fișiere de tipul ''id_rsa.pub'' sau ''id_dsa.pub'', acesta pot fi folosite, în caz contrar fiind necesară generarea acestora. - generarea unei chei SSH (plasată în ''~/.ssh/id_rsa'' în mod implicit) se face pe baza unei adrese de poștă electronică, respectiv a unei parole: aii2014@ubuntu:~$ ssh-keygen -t rsa -C "aipi2014@andreirosucojocaru.ro" Generating public/private rsa key pair. Enter file in which to save the key (/home/aii2014/.ssh/id_rsa): Created directory '/home/aii2014/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/aii2014/.ssh/id_rsa. Your public key has been saved in /home/aii2014/.ssh/id_rsa.pub. The key fingerprint is: c4:de:4e:09:ff:a8:3f:5a:8d:30:06:81:b1:6a:80:ff aipi2014@andreirosucojocaru.ro - cheia SSH generată trebuie indicată daemon-ului ''ssh-agent'': aii2014@ubuntu:~$ eval "$(ssh-agent -s)" Agent pid 6243 aii2014@ubuntu:~$ ssh-add ~/.ssh/id_rsa Enter passphrase for /home/aii2014/.ssh/id_rsa: Identity added: /home/aii2014/.ssh/id_rsa (/home/aii2014/.ssh/id_rsa) - se vizualizează cheia SSH generată (''cat ~/.ssh/id_rsa.pub'') și se asociază contului GitHub - se accesează tab-ul ''Settings''\\ {{ :utile:githubssh01.jpg?nolink&700 }} - din meniul afisat, se selectează opțiunea ''SSH Keys'' și apoi se apasă butonul ''Add SSH Key''\\ {{ :utile:githubssh02.jpg?nolink&700 }} - se completează câmpurile ''Title'' (cu o denumire sugestivă a mașinii de pe care se dorește să se realizeze conexiunea) și ''Key'' (valoarea cheii SSH) și apoi se apasă butonul ''Add key''\\ {{ :utile:githubssh03.jpg?nolink&700 }} - operația va fi realizată după ce se introduce parola asociată contului Github\\ {{ :utile:githubssh04.jpg?nolink&300 }} - valoarea introdusă va fi afișată în lista de chei SSH asociate contului\\ {{ :utile:githubssh05.jpg?nolink&700 }} - verificarea conectivității se face prin accesarea GitHub prin SSH, o configurare corectă fiind indicată de afișarea numelui de utilizator dorit aii2014@ubuntu:~$ ssh -T git@github.com The authenticity of host 'github.com (192.30.252.131)' can't be established. RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'github.com,192.30.252.131' (RSA) to the list of known hosts. Hi aipi2014! You've successfully authenticated, but GitHub does not provide shell access. De asemenea, în lista cheilor SSH asociate contului GitHub, va fi indicată data la care aceasta a fost utilizată cel mai recent.