Sinossi
git init [--bare] [--initial-branch=<name>] [--template=<dir>] [directory]
Descrizione
Il comando git init crea un nuovo repository Git vuoto o ne reinizializza uno esistente. È tipicamente il primo comando che esegui quando vuoi iniziare a tracciare un progetto con Git. Il comando crea una directory nascosta .git contenente tutti i metadati di cui Git ha bisogno: il database degli oggetti, i riferimenti, la configurazione, gli hook e l'index. Senza questa directory, Git non ha posto dove memorizzare la storia.
Eseguire git init in un repository esistente è sicuro — non sovrascrive oggetti o ref esistenti. Invece, reinizializza i template e assicura che la struttura della directory sia intatta. Per impostazione predefinita, Git moderno crea un repository con il nome del branch configurato da init.defaultBranch, che di solito è main nelle nuove installazioni.
Oltre al comportamento predefinito, git init rispetta l'impostazione core.hooksPath se mantieni una directory di hook centralizzata, e la config init.templateDir per copiare hook personalizzati e file di exclude in ogni nuovo repository. Sui filesystem dove la sensibilità al case conta, core.ignoreCase viene impostato automaticamente in base al rilevamento al momento dell'init. I team che fanno frequentemente bootstrap di nuovi servizi spesso scriptano i passi post-init: impostare il branch predefinito, aggiungere un file di licenza, configurare il template gitignore e configurare un remote — tutto immediatamente dopo aver eseguito git init. Capire quali file contiene .git/ (HEAD, config, objects/, refs/, hooks/) demistifica le operazioni successive e rende il recupero dagli incidenti molto più facile.
Opzioni comuni
| Opzione | Descrizione |
|---|---|
--bare | Crea un repository bare senza working tree, adatto per essere ospitato su un server. |
--initial-branch=<name> / -b | Imposta il nome del branch iniziale (default main). |
--template=<dir> | Usa una directory template personalizzata per hook e config. |
--shared[=<perms>] | Permette al repository di essere condiviso da un gruppo Unix. |
--separate-git-dir=<dir> | Memorizza i dati Git effettivi in una directory separata, lasciando un file .git che vi punta. |
-q, --quiet | Sopprime l'output informativo. |
Esempi
git init
# Inizializza un repository nella directory corrente
git init my-project
# Crea una nuova directory e inizializza un repo al suo interno
git init --bare /srv/git/myproject.git
# Crea un repository bare da ospitare su un server
git init -b trunk
# Inizializza con il branch iniziale chiamato "trunk" invece di "main"
Errori comuni
Un errore frequente è eseguire git init nella tua home directory per sbaglio, trasformando l'intera cartella home in un repository. Controlla sempre la tua directory corrente prima di eseguirlo. Un'altra trappola è inizializzare un repo dentro la working tree di un repo esistente — questo crea repo annidati che possono confondere strumenti e umani. Se hai creato accidentalmente un repo indesiderato, rimuovi semplicemente la directory .git per disfarlo.
Comandi correlati
git clone, git config, git remote