Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "Programmazione/Git"
Differenze tra le versioni 9 e 21 (in 12 versioni)
Versione 9 del 06/12/2014 15.20.19
Dimensione: 4985
Autore: jeremie2
Commento:
Versione 21 del 26/03/2026 18.58.44
Dimensione: 8131
Autore: ivantu
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 4: Linea 4:
<<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?f=46&t=590616"; rilasci="14.04")>> <<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?f=46&t=590616"; rilasci="24.04 22.04")>>
Linea 8: Linea 8:
'''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: '''Git''' è un sistema di controllo di versione distribuito ('''DVCS''' - '''D'''istributed '''V'''ersion '''C'''ontrol '''S'''ystem) utilizzabile da [[AmministrazioneSistema/Terminale|riga di comando]]. Gli aspetti principali di un sistema di controllo versione riguardano:
Linea 14: Linea 14:
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. A differenza di programmi come [[Programmazione/Cvs|CVS]] o [[Programmazione/Subversion|Subversion]], e in modo simile a [[http://mercurial.selenic.com|Mercurial]] o [[Programmazione/Bazaar|Baazar]], '''Git''' è caratterizzato da una gestione localizzata, ovvero è utilizzabile con repository locali invece che esclusivamente remoti. Sistemi come '''Subversion''' adottano un repository centrale (server o servizio web) in cui risiede il progetto. In tali sistemi, la sincronizzazione del lavoro e il salvataggio delle modifiche (''commit'') avvengono direttamente sul repository centralizzato.
Linea 16: Linea 16:
'''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à. '''Git''' lavora invece in locale. Ogni directory di lavoro è un repository autosufficiente. Operazioni come commit, consultazione dei log e molte altre azioni vengono eseguite localmente, senza necessità di un server esterno. La sincronizzazione con altri repository (server centrale, altri PC in rete, ecc.) avviene solo quando necessario. Ciò garantisce maggiore flessibilità e velocità d'esecuzione.
Linea 19: Linea 19:
= Installazione/Configurazione base = = Installazione =
Linea 21: Linea 21:
 0. Per installare '''Git''' digitare in un [[AmministrazioneSistema/RigaDiComando|terminale]]:{{{
sudo apt-get install git
Sebbene l'uso del [[AmministrazioneSistema/Terminale|terminale]] sia il metodo più diretto e completo

[[AmministrazioneSistema/InstallareProgrammi/Apt|Installare]] '''Git''', digitare in un [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo apt install git
Linea 24: Linea 26:
 0. Impostare '''nome utente''' e '''indirizzo e-mail''' che si vogliono utilizzare per identificarsi nei progetti:{{{
== Interfacce grafiche (GUI) ==

'''Git''' include due strumenti storici basati su Tcl/Tk. Sono essenziali ma molto leggeri e funzionali, per agevolare la visualizzazione dei branch e la gestione dei commit:

=== Gitk/Git-gui ===

[[AmministrazioneSistema/InstallareProgrammi/Apt|Installare]] i pacchetti [[apt://git-gui|git-gui]] e [[apt://gitk|gitk]].

Si avviano dal terminale all'interno della cartella del progetto, digitando nel [[AmministrazioneSistema/Terminale|terminale]] i comandi:
 * Specializzato nella visualizzazione della cronologia e dei branch:{{{
 gitk
 }}}
 * Focalizzato sulla creazione dei commit, la gestione dell'area di staging e le operazioni di merge semplici:{{{
 git-gui
 }}}

=== Gitg (ottimizzato per GNOME) ===

'''Gitg''': È l'interfaccia grafica predefinita per l'ambiente desktop [[AmbienteGrafico/Gnome|GNOME]]. Offre una visualizzazione moderna e pulita dei commit e permette di gestire le operazioni comuni.

[[AmministrazioneSistema/InstallareProgrammi/Apt|Installare]] il pacchetto [[apt://gitg|gitg]].

=== Integrazione in VS Code ===

Se si utilizza '''[[Ufficio/EditorDiTesto/VisualStudioCode#Git_in_Visual_Studio_Code|Visual Studio Code]]''' per programmare, '''Git''' è integrato nativamente.

##=== GitKraken / SmartGit (Proprietari/Avanzati) ===

##Esistono client molto potenti e professionali, spesso usati in ambito aziendale:

## * '''!GitKraken''': Esteticamente molto curato, disponibile come pacchetto .deb o tramite Snap. È gratuito per repository pubblici.
## * '''!SmartGit''': Molto completo, gratuito per uso non commerciale.

<<Anchor(configurazione)>>
= Configurazione base =

Dopo l'installazione è necessario definire l'identità dell'utente per firmare correttamente i commit.

== Identificazione utente nei progetti ==

Impostare il '''nome utente''' e l''''indirizzo e-mail''' da utilizzare globalmente per l'identificazione nei progetti Git, digitare nel [[AmministrazioneSistema/Terminale|terminale]] questi comandi:{{{
Linea 27: Linea 70:
}}}avendo cura di soistituire le diciture NOME_UTENTE e INDIRIZZO_E-MAIL col proprio nome utente e indirizzo e-mail.
 ||<tablestyle="text-align: justify; width:100%;" style="border:none;" 5%><<Immagine(Icone/Piccole/note.png,,center)>> ||<style="padding:0.5em; border:none;">''È 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à:{{{
}}}sostituendo le diciture `NOME_UTENTE` e `INDIRIZZO_E-MAIL` con i propri dati. Esempio per l'utente '''Mario Rossi''':{{{
git config --global user.name "Mario Rossi"
git config --global user.email mario.rossi@mail.com
}}}

{{{#!wiki note
Le configurazioni globali vengono salvate nel file nascosto `.gitconfig` nella propria directory '''Home'''. Per impostare dati specifici solo per un determinato repository, è sufficiente omettere l'opzione '''--global''' mentre ci si trova all'interno della cartella del progetto.
}}}

== Impostazione dell'alias lg ==

Il monitoraggio dell'evoluzione del progetto avviene tramite la consultazione dello storico dei commit. Il comando principale è `git log`, tuttavia, per facilitare la lettura dei rami e delle modifiche, è prassi comune impostare un alias che fornisca una rappresentazione grafica e sintetica.

È consigliato impostare l'alias '''lg''' per una versione personalizzata del comando '''log''', al fine di migliorarne la leggibilità:{{{
Linea 33: Linea 87:
<<Anchor(cronologia)>>
= Visualizzazione della cronologia =

 0. [[#Configurazione_base|Configurare l'alias]] '''lg'''.
 0. Una volta impostato, sarà possibile visualizzare l'andamento del repository digitando:{{{
 git lg
 }}}

<<Anchor(creare)>>
Linea 35: Linea 98:
Viene qui mostrato come creare un '''nuovo progetto''' o come importare (clonare) un '''progetto esistente'''. == Creazione di un nuovo repository ==
Linea 37: Linea 100:
Per creare un '''nuovo progetto''' o per importare (clonare) un '''progetto esistente''', vengono descritte di seguito le procedure.

<<Anchor(creare)>>
Linea 39: Linea 105:
<<Anchor(creare)>>
 0. Creare la cartella `gitproject` nella propria '''Home''' che conterrà il progetto e spostarsi al suo interno:{{{
mkdir ~/gitproject
cd ~/gitproject
 0. [[AmministrazioneSistema/ComandiBase#mkdir|Creare]] la directory `gitproject` nella propria cartella '''Home''', digitare nel [[AmministrazioneSistema/Terminale|terminale]] i seguenti comandi:{{{
 mkdir ~/gitproject
 }}}
 0. [[AmministrazioneSistema/ComandiBase#cd|Spostarsi]] all'interno della cartella creata:{{{
 cd ~/gitproject
 }}}
 0. Per inizializzare un repository vuoto, digitare:{{{
 git init
 }}}Verrà creata la cartella nascosta `.git` contenente l'intera cronologia e i dati di controllo e restituito un messaggio simile al seguente:{{{
 Inizializzato un repository Git in /home/mario/gitproject/.git/
 }}}

{{{#!wiki note
Si ricorda che tutte le operazioni di gestione del repository (commit, visualizzazione cronologia, gestione branch, ecc.) devono essere eseguite posizionandosi all'interno della directory del progetto (ad esempio tramite il comando `cd ~/gitproject`). In questo modo Git può accedere alla sottocartella nascosta `.git` necessaria per il corretto funzionamento dei comandi.
Linea 44: Linea 120:
 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/USER_NAME/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).
Linea 53: Linea 124:
git clone PERCORSO/PROGETTO
}}}Verrà creata nella propria '''Home''' una cartella col nome del progetto in cui saranno copiati i contenuti.
 git clone PERCORSO/PROGETTO
 }}}Verrà creata nella propria '''Home''' una cartella col nome del progetto in cui saranno copiati i contenuti.
Linea 57: Linea 127:
git clone PERCORSO/PROGETTO PERCORSO/LOCALE
}}}
 git clone PERCORSO/PROGETTO PERCORSO/LOCALE
 }}}
Linea 66: Linea 136:
'''Git''' prevede una gestione molto efficace dei '''branch''' (rami di sviluppo). Consultare la [[Programmazione/Git/Branch|seguente pagina]].  '''Git''' permette una gestione avanzata dei '''branch''' (rami di sviluppo). Consultare la [[Programmazione/Git/Branch|seguente pagina]].
Linea 70: Linea 140:
Attraverso gli strumenti '''fetch''', '''merge''', '''pull''', '''push''' è possibile sincronizzare il lavoro svolto da utenti diversi utenti. Consultare la [[Programmazione/Git/RepositoryRemoti|seguente pagina]].  Tramite gli strumenti '''fetch''', '''pull''' e '''push''' è possibile sincronizzare il lavoro tra diversi utenti. Consultare la [[Programmazione/Git/RepositoryRemoti|seguente pagina]].


Guida verificata con Ubuntu: 22.04 24.04

Problemi in questa pagina? Segnalali in questa discussione

Introduzione

Git è un sistema di controllo di versione distribuito (DVCS - Distributed Version Control System) utilizzabile da riga di comando. Gli aspetti principali di un sistema di controllo versione riguardano:

  • 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.

A differenza di programmi come CVS o Subversion, e in modo simile a Mercurial o Baazar, Git è caratterizzato da una gestione localizzata, ovvero è utilizzabile con repository locali invece che esclusivamente remoti. Sistemi come Subversion adottano un repository centrale (server o servizio web) in cui risiede il progetto. In tali sistemi, la sincronizzazione del lavoro e il salvataggio delle modifiche (commit) avvengono direttamente sul repository centralizzato.

Git lavora invece in locale. Ogni directory di lavoro è un repository autosufficiente. Operazioni come commit, consultazione dei log e molte altre azioni vengono eseguite localmente, senza necessità di un server esterno. La sincronizzazione con altri repository (server centrale, altri PC in rete, ecc.) avviene solo quando necessario. Ciò garantisce maggiore flessibilità e velocità d'esecuzione.

Installazione

Sebbene l'uso del terminale sia il metodo più diretto e completo

Installare Git, digitare in un terminale il seguente comando:

sudo apt install git

Interfacce grafiche (GUI)

Git include due strumenti storici basati su Tcl/Tk. Sono essenziali ma molto leggeri e funzionali, per agevolare la visualizzazione dei branch e la gestione dei commit:

Gitk/Git-gui

Installare i pacchetti git-gui e gitk.

Si avviano dal terminale all'interno della cartella del progetto, digitando nel terminale i comandi:

  • Specializzato nella visualizzazione della cronologia e dei branch:

     gitk
  • Focalizzato sulla creazione dei commit, la gestione dell'area di staging e le operazioni di merge semplici:

     git-gui

Gitg (ottimizzato per GNOME)

Gitg: È l'interfaccia grafica predefinita per l'ambiente desktop GNOME. Offre una visualizzazione moderna e pulita dei commit e permette di gestire le operazioni comuni.

Installare il pacchetto gitg.

Integrazione in VS Code

Se si utilizza Visual Studio Code per programmare, Git è integrato nativamente.

Configurazione base

Dopo l'installazione è necessario definire l'identità dell'utente per firmare correttamente i commit.

Identificazione utente nei progetti

Impostare il nome utente e l'indirizzo e-mail da utilizzare globalmente per l'identificazione nei progetti Git, digitare nel terminale questi comandi:

git config --global user.name "NOME_UTENTE"
git config --global user.email INDIRIZZO_E-MAIL

sostituendo le diciture NOME_UTENTE e INDIRIZZO_E-MAIL con i propri dati. Esempio per l'utente Mario Rossi:

git config --global user.name "Mario Rossi"
git config --global user.email mario.rossi@mail.com

Le configurazioni globali vengono salvate nel file nascosto .gitconfig nella propria directory Home. Per impostare dati specifici solo per un determinato repository, è sufficiente omettere l'opzione --global mentre ci si trova all'interno della cartella del progetto.

Impostazione dell'alias lg

Il monitoraggio dell'evoluzione del progetto avviene tramite la consultazione dello storico dei commit. Il comando principale è git log, tuttavia, per facilitare la lettura dei rami e delle modifiche, è prassi comune impostare un alias che fornisca una rappresentazione grafica e sintetica.

È consigliato 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"

Visualizzazione della cronologia

  1. Configurare l'alias lg.

  2. Una volta impostato, sarà possibile visualizzare l'andamento del repository digitando:

     git lg

Creazione repository

Creazione di un nuovo repository

Per creare un nuovo progetto o per importare (clonare) un progetto esistente, vengono descritte di seguito le procedure.

Creazione nuovo repository

  1. Creare la directory gitproject nella propria cartella Home, digitare nel terminale i seguenti comandi:

     mkdir ~/gitproject
  2. Spostarsi all'interno della cartella creata:

     cd ~/gitproject
  3. Per inizializzare un repository vuoto, digitare:

     git init

    Verrà creata la cartella nascosta .git contenente l'intera cronologia e i dati di controllo e restituito un messaggio simile al seguente:

     Inizializzato un repository Git in /home/mario/gitproject/.git/

Si ricorda che tutte le operazioni di gestione del repository (commit, visualizzazione cronologia, gestione branch, ecc.) devono essere eseguite posizionandosi all'interno della directory del progetto (ad esempio tramite il comando cd ~/gitproject). In questo modo Git può accedere alla sottocartella nascosta .git necessaria per il corretto funzionamento dei comandi.

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 seguente pagina.

Branching

Git permette una gestione avanzata dei branch (rami di sviluppo). Consultare la seguente pagina.

Repository remoti

Tramite gli strumenti fetch, pull e push è possibile sincronizzare il lavoro tra diversi utenti. Consultare la seguente pagina.

Ulteriori risorse


CategoryProgrammazione