Da Anonimo (non verificato) , 29 Aprile 2026

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

OpzioneDescrizione
--bareCrea un repository bare senza working tree, adatto per essere ospitato su un server.
--initial-branch=<name> / -bImposta 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, --quietSopprime 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