git init
In questa pagina analizzeremo in modo approfondito il comando git init
. Entro la fine di questa pagina conoscerai le funzionalità di base e il set esteso di funzionalità di git init
. Questa analisi include:
- opzioni e utilizzo di
git init
- panoramica della directory
.git
- valori di ambiente personalizzati della directory
git init
git init
egit clone
a confronto- bare repository
git init
- modelli
git init
Il comando git init
crea un nuovo repository Git. Può essere usato per convertire un progetto esistente e senza versioni in un repository Git o inizializzare un nuovo repository vuoto. La maggior parte degli altri comandi Git non è disponibile al di fuori di un repository inizializzato, quindi questo è di solito il primo comando che eseguirai in un nuovo progetto.
L'esecuzione di git init
crea una sottodirectory .git
nella directory di lavoro corrente, che contiene tutti i metadati Git necessari per il nuovo repository. Questi metadati includono sottodirectory per oggetti, riferimenti e file modello. Viene creato anche un file HEAD
che rimanda al commit attualmente verificato.
A parte la directory .git
, nella directory principale del progetto, un progetto esistente rimane inalterato (a differenza di SVN, Git non richiede una sottodirectory .git
in ogni sottodirectory).
Per impostazione predefinita, git init
inizializzerà la configurazione Git sul percorso della sottodirectory .git
. Il percorso della sottodirectory può essere modificato e personalizzato se desideri spostarlo altrove. Puoi impostare la variabile di ambiente $GIT_DIR
su un percorso personalizzato; git init
inizializzerà i file di configurazione Git su tale percorso. Inoltre, puoi passare l'argomento --separate-git-dir
per lo stesso risultato. Un caso d'uso comune per una sottodirectory .git
separata serve a conservare i "dotfile" di configurazione del sistema (.bashrc
, .vimrc
, ecc.) nella home directory mantenendo la cartella file.git
altrove.
materiale correlato
Branch Git
Scopri la soluzione
Impara a utilizzare Git con Bitbucket Cloud
Utilizzo
Rispetto a SVN, il comando git init
è un modo incredibilmente semplice per creare nuovi progetti con controllo della versione. Git non richiede che tu crei alcun repository, importi file ed estragga una copia funzionante. Inoltre, Git non richiede alcun server o privilegio di amministratore preesistente. Tutto quello che devi fare è avviare una cd nella sottodirectory del progetto ed eseguire git init
per avere un repository Git completamente funzionante.
git init
Trasforma la directory corrente in un repository Git. Questo aggiunge una sottodirectory .git
della directory corrente e consente di iniziare a registrare le revisioni del progetto.
git init <directory>
Crea un repository Git vuoto nella directory specificata. L'esecuzione di questo comando creerà una nuova sottodirectory chiamata
Se hai già eseguito git init
in una directory di progetto che contiene una sottodirectory .git
, puoi eseguire nuovamente git init
in tutta sicurezza nella stessa directory di progetto. Questa operazione non sostituirà alcuna configurazione .git
esistente .
git init egit clone a confronto
Una breve nota: git init
e git clone
possono essere facilmente confusi. Ad alto livello, possono entrambi essere usati per "inizializzare un nuovo repository git". Tuttavia, git clone
dipende da git init
. git clone
viene utilizzato per creare una copia di un repository esistente. Internamente, git clone
chiama prima git init
per creare un nuovo repository. Quindi, copia i dati dal repository esistente ed estrae un nuovo set di file funzionanti. Scopri di più nella pagina relativa a git clone.
Bare repository --- git init --bare
git init --bare <directory>
Inizializza un repository Git vuoto, ma ometti la directory di lavoro. I repository condivisi devono sempre essere creati con il flag --bare
(vedi discussione sotto). Convenzionalmente, i repository inizializzati con il flag --bare
terminano con .git
. Ad esempio, la versione bare di un repository denominato mio-progetto
dovrebbe essere archiviata in una directory denominata mio-progetto.git
.
Il flag --bare
crea un repository che non ha una directory di lavoro, rendendo impossibile modificare i file e salvare le modifiche in quel repository. Puoi creare un bare repository da cui eseguire git push e git pull, ma non eseguirai mai direttamente il commit in esso. I repository centrali devono sempre essere creati come bare repository perché l'invio di branch in un repository non bare può sovrascrivere le modifiche. Pensa a --bare
come a un modo per contrassegnare un repository come struttura di archiviazione, anziché come ambiente di sviluppo. Ciò significa che, per praticamente tutti i flussi di lavoro Git, il repository centrale è bare, mentre i repository locali degli sviluppatori non lo sono.
Il caso d'uso più comune di git init --bare
consiste nel creare un repository centrale remoto:
ssh <user>@<host> cd path/above/repo git init --bare my-project.git
Innanzitutto, accedi tramite SSH al server che conterrà il tuo repository centrale. Quindi, accedi al punto in cui desideri archiviare il progetto. Infine, usa il flag --bare
per creare un repository di archiviazione centrale. Gli sviluppatori cloneranno quindi mio-progetto.git
per creare una copia locale sul proprio computer di sviluppo.
Modelli git init
git init <directory> --template=<template_directory>
Inizializza un nuovo repository Git e copia i file dalla
nel repository.
I modelli ti consentono di inizializzare un nuovo repository con una sottodirectory .git
predefinita. Puoi configurare un modello in modo che contenga directory e file predefiniti che verranno copiati in una nuova sottodirectory .git
. I modelli Git predefiniti di solito risiedono in una directory `/usr/share/git-core/templates`
, ma possono trovarsi in un percorso diverso sul computer.
I modelli predefiniti sono un buon riferimento ed esempio di come utilizzare le funzionalità dei modelli. Una potente funzionalità dei modelli che è esposta nei modelli predefiniti è la configurazione di hook Git. Puoi creare un modello con hook Git predefiniti e inizializzare i tuoi nuovi repository Git con hook comuni pronti all'uso. Scopri di più sugli hook Git nella pagina Git Hook.
Configurazione
git init <directory> --template=<template_directory>
Tutte le configurazioni della
accettano un argomento
. Se fornisci la
, il comando viene eseguito al suo interno. Se questa directory non esiste, verrà creata. Oltre alle opzioni e alla configurazione già discusse, git init
offre altre opzioni da riga di comando. Ecco un elenco completo:
-Q
--QUIET
Stampa solo messaggi, errori e avvisi di "livello critico". Tutti gli altri output sono silenziati.
--BARE
Crea un bare repository. (Vedi la sezione "Bare repository" sopra.)
--TEMPLATE=
Specifica la directory da cui verranno utilizzati i modelli (vedi la sezione "Modelli Git Init" sopra).
--SEPARATE-GIT-DIR=
Crea un file di testo contenente il percorso di
. Questo file funge da collegamento alla directory .git
. Questo è utile se desideri memorizzare la directory .git
in una posizione o in un'unità separata dai file di lavoro del tuo progetto. I casi d'uso comuni per --separate-git-dir
includono:
- serve a conservare i "dotfile" di configurazione del sistema (
.bashrc, .vimrc
, ecc.) nella home directory mantenendo la cartellafile.git
altrove - La tua cronologia Git è cresciuta molto in termini di dimensioni del disco e devi spostarla altrove su un'unità separata ad alta capacità
- Vuoi conservare un progetto Git in una directory accessibile al pubblico come
`www:root `
Puoi chiamare git init --separate-git-dir
su un repository esistente e .git dir
verrà spostato nel percorso
specificato.
--SHARED[=(FALSE|TRUE|UMASK|GROUP|ALL|WORLD|EVERYBODY|0XXX)]
Imposta le autorizzazioni di accesso per il nuovo repository. Questo specifica quali utenti e gruppi che utilizzano autorizzazioni a livello Unix sono autorizzati eseguire il push/pull al repository.
Esempi
Creare un nuovo repository git per un codebase esistente
cd /path/to/code \
git init \
git add . \
git commit
Creare un nuovo bare repository
git init --bare /path/to/repo.git
Creare un modello git init e inizializzare un nuovo repository git dal modello
mkdir -p /path/to/template \
echo "Hello World" >> /absolute/path/to/template/README \
git init /new/repo/path --template=/absolute/path/to/template \
cd /new/repo/path \
cat /new/repo/path/README
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.