Skip to content

04. Creare e configurare un repository

4.1 git init — inizializzare un repository

Section titled “4.1 git init — inizializzare un repository”
Terminal window
git init # nella directory corrente
git init /path/to/project # in una directory specifica

Il comando crea la sottodirectory .git con tutti i metadati (branch di default, oggetti, reference, template). Nessun altro file viene modificato. La maggior parte dei comandi Git funziona solo all’interno di un repository inizializzato.

git config imposta valori di default, validi a livello globale (--global, per tutti i repository della macchina) o locale (--local, solo per il repository corrente).

Uso più comune: impostare identità e email usate nei commit.

Terminal window
# identità globale (personale)
git config --global user.email "me@example.com"
git config --global user.name "Meme The Great"
# identità locale diversa per il repository del proprio datore di lavoro
cd company-project
git config --local user.email "john@company.com"
git config --local user.name "John Smith"

I valori locali prevalgono su quelli globali: così ogni repository userà automaticamente l’identità corretta.

4.3 git clone — copiare un repository remoto

Section titled “4.3 git clone — copiare un repository remoto”
Terminal window
git clone <URL> # nella directory corrente
git clone <URL> <DIRECTORY> # specificando il nome della cartella locale

La clonazione è un’operazione una tantum: dopo aver creato la copia locale non serve più clonare (per recuperare le modifiche altrui si usa git fetch / git pull, vedi sezione 11).

L’URL può usare diversi protocolli:

  • SSH: ssh://[user@]host.xz[:port]/path/to/repo.git/
  • HTTP(S): http[s]://host.xz[:port]/path/to/repo.git/
  • GIT: git://host.xz[:port]/path/to/repo.git/

Esempi con GitHub:

  • clone di un repository pubblico via HTTPS (git clone https://github.com/php/php-src.git): accesso in sola lettura;
  • clone di un repository privato via HTTPS: viene richiesta autenticazione, con accesso in scrittura;
  • clone di un repository privato via SSH (richiede chiave pubblica configurata): accesso in scrittura.

Al termine, git clone crea la directory locale e il remote origin, usato dai comandi successivi per inviare/ricevere modifiche.

Opzioni utili:

Terminal window
git clone --depth=10 <URL> # shallow clone: solo gli ultimi 10 commit
git clone --single-branch --branch <NAME> <URL> # solo uno specifico branch