Configurazione di un repository
Questo tutorial fornisce una panoramica su come configurare un repository sotto il controllo della versione di Git. Questa risorsa ti guiderà nell'inizializzazione di un repository Git per un progetto nuovo o esistente. Di seguito sono inclusi esempi di flusso di lavoro di repository sia creati localmente che clonati da repository remoti. Questa guida presuppone una familiarità di base con un'interfaccia della riga di comando.
I principali punti trattati in questa guida sono:
- Inizializzazione di un nuovo repository Git
- Clonazione di un repository Git esistente
- Salvataggio di una versione modificata di un file nel repository
- Configurazione di un repository Git per la collaborazione remota
- Comandi di controllo della versione Git comuni
Entro la fine di questo modulo, dovresti essere in grado di creare un repository Git, usare i comandi Git comuni, salvare un file modificato, visualizzare la cronologia del tuo progetto e configurare una connessione a un servizio di hosting Git (Bitbucket).
Che cos'è un repository Git?
Un repository Git è un archivio virtuale del tuo progetto. Ti consente di salvare versioni del tuo codice, a cui puoi accedere quando necessario.
Inizializzazione di un nuovo repository: git init
Per creare un nuovo repository, utilizzerai il comando git init
. git init
è un comando monouso che usi durante la configurazione iniziale di un nuovo repository. L'esecuzione di questo comando creerà una nuova sottodirectory .git
nella tua attuale directory di lavoro. Questo creerà anche un nuovo branch principale.
Controllo delle versioni di un progetto esistente con un nuovo repository git
Questo esempio presuppone che tu abbia già una cartella di progetto esistente in cui desideri creare un repository. Prima accederai
alla cartella principale del progetto e poi eseguirai il comando git init
.
materiale correlato
Branch Git
Scopri la soluzione
Impara a utilizzare Git con Bitbucket Cloud
cd /path/to/your/existing/code
git init
Indirizzando git init
a una directory di progetto esistente, si eseguirà la stessa configurazione di inizializzazione menzionata sopra, ma con ambito di riferimento a quella directory del progetto.
git init <project directory>
Visita la pagina git init per informazioni più dettagliate su git init
.
Clonazione di un repository esistente: git clone
Se un progetto è già stato configurato in un repository centrale, il comando clone è il modo più comune tramite cui gli utenti possono ottenere un clone di sviluppo locale. Come con git init
, la clonazione è generalmente un'operazione una tantum. Una volta che uno sviluppatore ha ottenuto una copia di lavoro, tutte le operazioni di controllo della versione e le collaborazioni vengono gestite tramite il proprio repository locale.
git clone <repo url>
git clone
è usato per creare una copia o un clone di repository remoti. Si passa a git clone
l'URL di un repository. Git supporta diversi protocolli di rete e formati URL corrispondenti. In questo esempio, useremo il protocollo Git SSH. Gli URL Git SSH seguono un modello di: git@HOSTNAME:USERNAME/REPONAME.git
Un esempio di URL Git SSH potrebbe essere: git@bitbucket.org:rhyolight/javascript-data-store.git
dove i valori del modello corrispondono a:
NOME HOST: bitbucket.org
NOME UTENTE: rhyolight
REPONAME: javascript-data-store
Una volta eseguita, l'ultima versione dei file di repository remoti sul branch principale verrà scaricata e aggiunta a una nuova cartella. La nuova cartella avrà il nome del REPONAME, in questo caso javascript-data-store
. La cartella conterrà la cronologia completa del repository remoto e un branch principale appena creato.
Per ulteriore documentazione sull'utilizzo di git clone
e sui formati URL Git supportati, visita la pagina dei cloni di git.
Salvare le modifiche al repository: git add e git commit
Ora che hai un repository clonato o inizializzato, puoi apportare modifiche alla versione del file. L'esempio seguente presuppone che tu abbia impostato un progetto in /path/to/project
. I passaggi eseguiti in questo esempio sono:
- Modifica delle directory in
/path/to/project
- Creazione di un nuovo file
CommitTest.txt
con contenuti ~" test del contenuto per git tutorial"~ - git aggiunge
CommitTest.txt
all'area staging del repository - Creazione di un nuovo commit con un messaggio che descriva il lavoro svolto nel commit
cd /path/to/project
echo "test content for git tutorial" >> CommitTest.txt
git add CommitTest.txt
git commit -m "added CommitTest.txt to the repo"
Dopo aver eseguito questo esempio, il tuo repository avrà ora CommitTest.txt
aggiunto alla cronologia e terrà traccia degli aggiornamenti futuri del file.
Questo esempio ha introdotto due comandi git aggiuntivi: add
e commit. Questo era un esempio molto limitato, ma entrambi i comandi sono trattati in modo più approfondito nelle pagine di git add e git commit. Un altro caso d'uso comune per
git add
è l'opzione --all
. L'esecuzione di git add --all
prenderà tutti i file modificati e non tracciati nel repository e li aggiungerà al repository e aggiornerà l'albero di lavoro del repository.
Collaborazione da repository a repository: git push
È importante comprendere che l'idea di Git di "copia di lavoro" è molto diversa dalla copia di lavoro che si ottiene estraendo il codice sorgente da un repository SVN. A differenza di SVN, Git non fa distinzione tra la copia di lavoro e il repository centrale: sono entrambi repository Git a tutti gli effetti.
Ciò rende la collaborazione con Git fondamentalmente diversa da quella con SVN. Mentre SVN dipende dalla relazione tra il repository centrale e la copia di lavoro, il modello di collaborazione di Git si basa sull'interazione tra repository e repository. Invece di inserire una copia di lavoro nel repository centrale di SVN, si esegue il push o il pull dei commit da un repository all'altro.
Naturalmente, non c'è niente che ti impedisca di dare un significato speciale a determinati repository Git. Ad esempio, semplicemente designando un repository Git come repository "centrale", è possibile replicare un flusso di lavoro centralizzato utilizzando Git. Ciò viene realizzato attraverso convenzioni piuttosto che essere integrato in VCS stesso.
Repository bare o clonati
Se hai usato git clone
nella precedente sezione "Inizializzazione di un nuovo repository" per configurare il tuo repository locale, il tuo repository è già configurato per la collaborazione remota. git clone
configurerà automaticamente il tuo repository con un remoto indirizzato all'URL Git da cui l'hai clonato. Ciò significa che una volta apportate e salvate le modifiche a un file, puoi eseguire git push
di tali modifiche nel repository remoto.
Se hai usato git init
per creare un nuovo repository, non avrai un repository remoto in cui eseguire il push delle modifiche. Uno schema comune quando si inizializza un nuovo repository è andare su un servizio Git ospitato come Bitbucket e crearne uno lì. Il servizio fornirà un URL Git che potrai quindi aggiungere al tuo repository Git locale ed eseguire git push
nel repository ospitato. Dopo aver creato un repository remoto con il tuo servizio preferito, dovrai aggiornare il tuo repository locale con una mappatura. Discutiamo di questo processo nella guida alla configurazione di seguito.
Se preferisci ospitare il tuo repository remoto, dovrai configurare un "repository bare". Sia git init
che git clone
accettano un argomento --bare
. Il caso d'uso più comune per il repository è la creazione di un repository Git centrale remoto
Configurazione: git config
Una volta configurato un repository remoto, dovrai aggiungere un URL del repository remoto alla tua git config
locale e impostare un branch upstream per i branch locali. Il comando git remote
offre tale utilità.
git remote add <remote_name> <remote_repo_url>
Questo comando mapperà il repository
in un riferimento nel tuo repository locale sotto
. Dopo aver mappato il repository remoto, puoi eseguire in tale repository il push dei branch locali.
git push -u <remote_name> <local_branch_name>
Questo comando invierà il branch del repository locale sotto
al repository remoto all'indirizzo
.
Per uno sguardo più approfondito a git remote
, vedi la pagina Git remote
.
Oltre a configurare un URL di repository remoto, potrebbe essere necessario impostare anche le opzioni di configurazione globali di Git come nome utente o email. Il comando git config
ti consente di configurare la tua installazione Git (o un singolo repository) dalla riga di comando. Questo comando può definire tutto, dalle informazioni utente, alle preferenze, al comportamento di un repository. Di seguito sono elencate diverse opzioni di configurazione comuni.
Git memorizza le opzioni di configurazione in tre file separati, il che consente di definire l'ambito delle opzioni in singoli repository (locali), utente (globale) o all'intero sistema (sistema):
- Locale:
— Impostazioni specifiche del repository./.git/config - Globale:
/.gitconfig
— Impostazioni specifiche dell'utente. È qui che vengono archiviate le opzioni impostate con il flag —global. - Sistema:
$(prefisso)/etc/gitconfig
— Impostazioni a livello di sistema.
Definisci il nome dell'autore da utilizzare per tutti i commit nel repository corrente. In genere, ti consigliamo di utilizzare il flag —global
per impostare le opzioni di configurazione per l'utente corrente.
git config --global user.name <name>
Definisci il nome dell'autore da utilizzare per tutti i commit dall'utente corrente.
Se si aggiunge l'opzione —local
o non si passa affatto un'opzione a livello di configurazione, verrà impostato il nome utente
per il repository locale corrente.
git config --local user.email <email>
Definisci l'email dell'autore da utilizzare per tutti i commit dall'utente corrente.
git config --global alias.<alias-name> <git-command>
Crea una scorciatoia per un comando Git. Questa è una potente utilità per creare scorciatoie personalizzate per i comandi git di uso comune. Un esempio semplicistico potrebbe essere:
git config --global alias.ci commit
Questo crea un comando ci
che puoi eseguire come scorciatoia per git commit
. Per saperne di più sugli alias git, visita la pagina di configurazione git.
it config --system core.editor <editor>
Definisci l'editor di testo usato da comandi come git commit
per tutti gli utenti sul computer corrente. L'argomento dell'
dovrebbe essere il comando che avvia l'editor desiderato (ad esempio, vi). Questo esempio introduce l'opzione —system
. L'opzione —system
imposterà la configurazione per l'intero sistema, ovvero tutti gli utenti e i repository su una macchina. Per informazioni più dettagliate sui livelli di configurazione, visita la pagina di configurazione git.
git config --global --edit
Apri il file di configurazione globale in un editor di testo per la modifica manuale. Una guida approfondita su come configurare un editor di testo da usare con git è disponibile nella pagina di configurazione di Git.
Discussione
Tutte le opzioni di configurazione sono archiviate in un file di testo non crittografato, quindi il comando git config
è in realtà solo una comoda interfaccia della riga di comando. In genere, dovrai configurare un'installazione Git solo la prima volta che inizi a lavorare su una nuova macchina di sviluppo e, praticamente in tutti i casi, dovrai usare il flag —global
. Un'eccezione importante è quella di sostituire l'indirizzo email dell'autore. Potresti voler impostare il tuo indirizzo email personale per i repository personali e open source e il tuo indirizzo email professionale per i repository relativi al lavoro.
Git memorizza le opzioni di configurazione in tre file separati, il che consente di definire l'ambito delle opzioni in singoli repository, utente o all'intero sistema:
<>repo/.git/config
— Impostazioni specifiche del repository./.gitconfig
— Impostazioni specifiche dell'utente. È qui che vengono archiviate le opzioni impostate con il flag —global.$(prefisso)/etc/gitconfig
— Impostazioni a livello di sistema.
Quando le opzioni in questi file sono in conflitto, le impostazioni locali hanno la precedenza sulle impostazioni dell'utente, che hanno la precedenza su quelle del sistema. Se apri uno di questi file, vedrai qualcosa del genere:
[user] name = John Smith email = john@example.com [alias] st = status co = checkout br = branch up = rebase ci = commit [core] editor = vim
Puoi modificare manualmente questi valori con lo stesso identico effetto di git config
.
Esempio
La prima cosa che farai dopo aver installato Git è comunicargli il tuo nome/email e personalizzare alcune delle impostazioni predefinite. Una tipica configurazione iniziale potrebbe essere simile alla seguente:
Dì a Git chi sei git config
git --global user.name "John Smith" git config --global user.email john@example.com
Seleziona il tuo editor di testo preferito
git config --global core.editor vim
Aggiungi alcuni alias simili a SVN
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.up rebase
git config --global alias.ci commit
Questo produrrà il file ~ /.gitconfig
della sezione precedente. Dai un'occhiata più approfondita a git config nella pagina git config.
Riepilogo
Qui abbiamo spiegato come creare un repository git usando due metodi: git init e git clone. Questa guida può essere applicata per gestire il codice sorgente del software o altri contenuti che richiedono una versione. È stata fatta anche una presentazione sull'utilizzo generale di Git add, git commit, git push e git remote.
Leggi la nostra guida su quale sistema di repository del codice è ideale per il tuo team!
Condividi l'articolo
Argomento successivo
Letture consigliate
Aggiungi ai preferiti queste risorse per ricevere informazioni sui tipi di team DevOps e aggiornamenti continui su DevOps in Atlassian.