## page was renamed from jepessen/Prove/Git
<
>
<>
<>
= Introduzione =
'''Git''' è un [[http://it.wikipedia.org/wiki/Controllo_versione|CVS]] ('''C'''ontrol '''V'''ersion '''S'''ystem). Gli aspetti importanti di un CSV si possono riassumere nel:
* tracciare la storia di un progetto e poter lavorare con le versioni precedenti;
* permettere la collaborazione di più persone allo stesso progetto;
* organizzare e semplificare l'andamento del progetto.
Rispetto a programmi come [[Programmazione/Cvs|CVS]], [[Programmazione/Subversion|Subversion]] ma più similmente a [[http://mercurial.selenic.com|Mercurial]], [[Programmazione/Bazaar|Baazar]], '''Git''' è caratterizzato da un sistema di controllo di versione localizzato, cioè utilizzabile con repository locali invece che remoti. Programmi come '''Subversion''' adottano un repository centrale, che materialmente è il posto (server, servizio web) in cui risiede il progetto. Gli utenti sincronizzano il lavoro con questo repository e quando devono salvare delle modifiche al progetto (''commit''), le salvano direttamente sul repository centralizzato.
'''Git''' invece lavora in locale. Non esiste un repository centralizzato nel modo che si intende in '''Subversion''' et similia. Ogni cartella di lavoro è un repository autosufficiente. Commit, ricerca log e molte altre azioni vengono eseguite in locale, senza l'appoggio di un server esterno. Quando si rende necessario è possibile sincronizzarsi con altri repository (server centrale, pc in rete, ecc..). Questo comporta ovvi vantaggi in termini di flessibilità.
<>
= Installazione/Configurazione base =
0. Per installare '''Git''' digitare in un [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo apt install git
}}}
0. Impostare '''nome utente''' e '''indirizzo e-mail''' che si vogliono utilizzare per identificarsi nei progetti:{{{
git config --global user.name "NOME_UTENTE"
git config --global user.email INDIRIZZO_E-MAIL
}}}avendo cura di sostituire le diciture NOME_UTENTE e INDIRIZZO_E-MAIL col proprio nome utente e indirizzo e-mail. In questa guida viene preso ad esempio il generico utente '''Mario Rossi''' con indirizzo email '''`mario.rossi@mail.com`''', pertanto i precedenti comandi divengono:{{{
git config --global user.name "Mario Rossi"
git config --global user.email mario.rossi@mail.com
}}}
{{{#!wiki note
È possibile modificare questi dati per un singolo repository omettendo il flag '''--global.'''}}}
0. Consigliato ma non obbligatorio, impostare l'alias '''lg''' per una versione personalizzata del comando '''log''' al fine di migliorarne la leggibilità:{{{
git config --global alias.lg "log --pretty=format:'%C(yellow)%h%Cred%d%Creset - %C(cyan)%an %Creset: %s %Cgreen(%cr)' --decorate --graph --all --abbrev-commit"
}}}
= Creazione repository =
Viene qui mostrato come creare un '''nuovo progetto''' o come importare (clonare) un '''progetto esistente'''.
== Creazione nuovo repository ==
<>
0. Creare la cartella `gitproject` nella propria '''Home''' che conterrà il progetto e spostarsi al suo interno:{{{
mkdir ~/gitproject
cd ~/gitproject
}}}
0. Per inizializzare un repository vuoto su cui poter incominciare a lavorare, digitare:{{{
git init
}}}verrà restituito un messaggio del tipo{{{
Inizializzato un repository Git in /home/mario/gitproject/.git/
}}}All'interno di `~/gitproject` sarà ora presente la cartella `.git` che contiene le informazioni del repository. Questa cartella è molto importante perché è l'unica che contiene tutti i dati necessari. (In '''Subversion''' ad es. viene creata una cartella .svn in ogni sottocartella del progetto).
== Clonazione repository ==
* Per scaricare un progetto già esistente su di un server, il comando da eseguire è:{{{
git clone PERCORSO/PROGETTO
}}}Verrà creata nella propria '''Home''' una cartella col nome del progetto in cui saranno copiati i contenuti.
* Se invece si preferisce clonare il repository in una cartella specifica, basta aggiungere il percorso al comando:{{{
git clone PERCORSO/PROGETTO PERCORSO/LOCALE
}}}
= Commit =
Attraverso il '''commit''' è possibile aggiungere, rimuovere e modificare i file del repository. Consultare la [[Programmazione/Git/Commit|seguente pagina]].
= Branching =
'''Git''' prevede una gestione molto efficace dei '''branch''' (rami di sviluppo). Consultare la [[Programmazione/Git/Branch|seguente pagina]].
= Repository remoti =
Attraverso gli strumenti '''fetch''', '''pull''', '''push''' è possibile sincronizzare il lavoro svolto da utenti diversi utenti. Consultare la [[Programmazione/Git/RepositoryRemoti|seguente pagina]].
= Ulteriori risorse =
* [[http://git-scm.com/|Sito ufficiale del progetto]]
* [[http://git-scm.com/doc|Documentazione ufficiale del progetto]]
* [[Programmazione|Portale sulla programmazione]]
----
CategoryProgrammazione