Close

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.

Branch Git
materiale correlato

Branch Git

Logo di Bitbucket
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: /.git/config — Impostazioni specifiche del repository.
  • 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.

Le persone collaborano utilizzando una parete piena di strumenti

Blog di Bitbucket

Illustrazione su Devops

Percorso di apprendimento DevOps

Funzione Demo Den per demo con esperti Atlassian

Come Bitbucket Cloud funziona con Atlassian Open DevOps

Iscriviti alla nostra newsletter DevOps

Thank you for signing up