Differences between revisions 1 and 2
Revision 1 as of 2011-01-06 23:11:15
Size: 3762
Editor: ?ErmenegildoFiorito
Comment: first draft
Revision 2 as of 2011-01-07 02:49:26
Size: 3748
Editor: ?skizzhg
Comment: header
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:

~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: it-~
~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: [[UsingGit|English]] - Italiano-~
Line 12: Line 10:
Questa è una guida introduttiva all'uso di git. Verrano spiegate le basi per capire il suo funzionamento e il suo uso. Questa è una guida introduttiva all'uso di git. Verranno spiegate le basi per capire il suo funzionamento e il suo uso.
Line 26: Line 24:
Cos'è '''git'''? Git è un sistema di '''''Controllo di versione distribuito'''''. La parte importante è ''Controllo di versione'' -- significa che è un programma che ti permette di tenere traccia dei cambiamenti dei file e comparare le differenti "versioni", e fare anche un'altra cosa fantastica, come tornare indietro a precedenti versioni di un certo file. Cos'è '''git'''? Git è un sistema di '''''Controllo di versione distribuito'''''. La parte importante è ''Controllo di versione'' -- significa che è un programma che permette di tenere traccia dei cambiamenti dei file e comparare le differenti "versioni", e fare anche un'altra cosa fantastica, come tornare indietro a precedenti versioni di un certo file.
Line 33: Line 31:
=== sistema di  controllo di versione''Distribuito'' === === sistema di controllo di versione''Distribuito'' ===
Line 35: Line 33:
Noi abbiamo analizzato ''git'' come Sistema di Controllo di Versione, ma ''git'' è un '''''VCS Distribuito'''''. ''Distribuito'' è un dettaglio dell'architettura di ''git'', che ha alcuni pro e alcuni contro. Ci sono altro "sistemi VCS'' famosi, come ''CVS'' e ''SVN'', questi vengono chiamati ''VCS Centralizzati'', questi hanno bisogno di avere una connessione al server centrale, per conservare tutti i dati e per eseguire molte operazioni. Pensa al comando ''log'': SVN ha bisogno di connettersi al server e scaricare i dati. Noi abbiamo analizzato ''git'' come Sistema di Controllo di Versione, ma ''git'' è un '''''VCS Distribuito'''''. ''Distribuito'' è un dettaglio dell'architettura di ''git'', che ha alcuni pro e alcuni contro. Ci sono altri "sistemi VCS'' famosi, come ''CVS'' e ''SVN'', chiamati ''VCS Centralizzati''; questi hanno bisogno di avere una connessione al server centrale, per conservare tutti i dati e per eseguire molte operazioni. Pensa al comando ''log'': SVN ha bisogno di connettersi al server e scaricare i dati.
Line 37: Line 35:
 Con i ''VCS Distribuiti'' (e ''git'' è uno di questi), questo non avviene: ogni copia del repository è una copia '''completa'''. Questo significa che le operazione sono più veloci, e che soprattutto puoi usare git sul tuo computer locale, senza avere un server.  Con i ''VCS Distribuiti'' (e ''git'' è uno di questi) ciò non avviene: ogni copia del repository è una copia '''completa'''. Questo significa che le operazione sono più veloci, e che soprattutto puoi usare git sul tuo computer locale, senza avere un server.
Line 39: Line 37:
Ovviamente anche i VCS Distribuiti hanno i loro difetti. Il problema più importante che ho riscontrato sono il grande numero di ''conflitti'. QUesto perchè con i VCS Centralizzati, un commit è di solito rifiutato se conflitta con la copia del server. Invece con i VCS distrubuiti, chiunque può eseguire un commit nel suo repo, e conflitta solo quando viene ''pushato''  (il termine "push" verrà spiegato in seguito). Ovviamente anche i VCS Distribuiti hanno i loro difetti, il problema più importante che ho riscontrato è il gran numero di ''conflitti'. Questo perché con i VCS Centralizzati un commit è di solito rifiutato se conflitta con la copia del server. Invece con i VCS distrubuiti, chiunque può eseguire un commit nel suo repo, e conflitta solo quando viene ''pushato'' (il termine "push" verrà spiegato in seguito).
Line 49: Line 47:
 * Un '''commit'''  è una referenza ad un singolo tree, e contiene anche altre meta-informazioni, come il timestamp, l'autore (nome ed email) e chi ha apportato il cambiamento e un puntatore al commit precedente. Generalmente, quando si usa git, si fa riferimento solo ai commit.  * Un '''commit''' è una referenza ad un singolo tree, e contiene anche altre meta-informazioni, come il timestamp, l'autore (nome ed email) che ha apportato le modifiche e un puntatore al commit precedente. Generalmente, quando si usa git, si fa riferimento solo ai commit.
Line 52: Line 50:
Se pensiamo al modello di immagazzinamento di git, noi distinguiamo una "area di lavoro", un "index" e un "repository":
Se pensiamo al modello di immagazzinamento di git, distinguiamo una "area di lavoro", un "index" e un "repository":

Translation(s): English - Italiano



Usare Git

Seminario online tenuto da David Paleino per Debian Women, 25-Nov-2010

Questa è una guida introduttiva all'uso di git. Verranno spiegate le basi per capire il suo funzionamento e il suo uso.

Requisiti

In questa guida si presume che:

  • si conosca l'uso di base della linea di comando e l'utilizzo di un editor di testo a scelta (emacs, vim, gedit, kate, etc.);

Requisiti tecnici:

Introduzione

Cos'è git? Git è un sistema di Controllo di versione distribuito. La parte importante è Controllo di versione -- significa che è un programma che permette di tenere traccia dei cambiamenti dei file e comparare le differenti "versioni", e fare anche un'altra cosa fantastica, come tornare indietro a precedenti versioni di un certo file.

Git viene usato da molti progetti software moderni, quindi è bene conoscere almeno un po' del suo funzionamento. Non c'è bisogno di andare molto nei dettagli, verrà spiegato solo il suo funzionamento di base e il suo uso generale.

Teoria

sistema di controllo di versione''Distribuito''

Noi abbiamo analizzato git come Sistema di Controllo di Versione, ma git è un VCS Distribuito. Distribuito è un dettaglio dell'architettura di git, che ha alcuni pro e alcuni contro. Ci sono altri "sistemi VCS famosi, come CVS e SVN, chiamati VCS Centralizzati; questi hanno bisogno di avere una connessione al server centrale, per conservare tutti i dati e per eseguire molte operazioni. Pensa al comando log: SVN ha bisogno di connettersi al server e scaricare i dati.

  • Con i VCS Distribuiti (e git è uno di questi) ciò non avviene: ogni copia del repository è una copia completa. Questo significa che le operazione sono più veloci, e che soprattutto puoi usare git sul tuo computer locale, senza avere un server.

Ovviamente anche i VCS Distribuiti hanno i loro difetti, il problema più importante che ho riscontrato è il gran numero di conflitti'. Questo perché con i VCS Centralizzati un commit è di solito rifiutato se conflitta con la copia del server. Invece con i VCS distrubuiti, chiunque può eseguire un commit nel suo repo, e conflitta solo quando viene pushato (il termine "push" verrà spiegato in seguito).

Il modello di immagazzinamento di git

Ogni oggetto all'interno di un repository git è identificato da una stringa univoca. Questa è chiamata hash. Normalmente è una somma SHA1 di alcune proprietà di cui parleremo più tardi.

Un oggetto git può essere un blob, un tree, commit o tag. Guardiamoli uno alla volta:

  • Un blob è un oggetto git su cui sono conservati i dati. Questo è generalmente un file su disco.

  • Un tree è come una cartella, fa referenza ad altri tree e/o blob. Immaginalo come una cartella con file e sottocartelle al suo interno.

  • Un commit è una referenza ad un singolo tree, e contiene anche altre meta-informazioni, come il timestamp, l'autore (nome ed email) che ha apportato le modifiche e un puntatore al commit precedente. Generalmente, quando si usa git, si fa riferimento solo ai commit.

  • Un tag è solo un modo per segnare un commit come se fosse in un certo modo speciale. Generalmente, i tag vengono usati per segnare commit con i numeri di versione, release e così via.

Se pensiamo al modello di immagazzinamento di git, distinguiamo una "area di lavoro", un "index" e un "repository":