1 01-Repository
Emanuele edited this page 2025-12-25 13:11:50 +01:00

01 - Comandi Repository

Comandi per creare, clonare e gestire repository Git.


git clone

Sintassi

git clone <url-repository> [directory]
git clone <url-repository> [opzioni]

Spiegazione

Crea una copia locale di un repository remoto. Scarica l'intera cronologia del progetto e configura automaticamente il remote "origin" puntando al repository sorgente.

Esempi pratici

Clone base:

git clone https://git.emanuelegori.uno/emanuele/boilerbot.git

Clona il repository nella directory boilerbot/

Clone con nome directory custom:

git clone https://git.emanuelegori.uno/emanuele/boilerbot.git mio-bot

Clona il repository nella directory mio-bot/

Clone di un branch specifico:

git clone -b develop https://git.emanuelegori.uno/emanuele/boilerbot.git

Clona solo il branch develop

Clone shallow (solo ultimo commit):

git clone --depth 1 https://git.emanuelegori.uno/emanuele/boilerbot.git

Utile per repository molto grandi, scarica solo l'ultimo commit risparmiando spazio e tempo.

Opzioni comuni

Opzione Descrizione
-b <branch> Clone di un branch specifico
--depth <n> Clone shallow con solo gli ultimi n commit
--single-branch Clone di un solo branch
--recurse-submodules Clone inclusi i submoduli
--bare Clone di repository bare (senza working directory)

Note

  • Dopo il clone, sei automaticamente sul branch principale (main/master)
  • Il remote "origin" viene configurato automaticamente
  • Le credenziali (token) vengono richieste al primo clone

git init

Sintassi

git init [directory]
git init [opzioni]

Spiegazione

Inizializza un nuovo repository Git locale. Crea la directory .git che contiene tutta la struttura necessaria per il versioning.

Esempi pratici

Inizializzare repository nella directory corrente:

mkdir mio-progetto
cd mio-progetto
git init

Output: Initialized empty Git repository in /percorso/mio-progetto/.git/

Inizializzare repository in una nuova directory:

git init nuovo-progetto
cd nuovo-progetto

Inizializzare con branch main (invece di master):

git init -b main

Oppure configura globalmente:

git config --global init.defaultBranch main

Inizializzare bare repository (per server):

git init --bare mio-repo.git

I bare repository sono usati come repository centrali senza working directory.

Workflow completo: da init a push

# 1. Inizializza repository locale
git init mio-progetto
cd mio-progetto

# 2. Crea primo file
echo "# Mio Progetto" > README.md

# 3. Staging e primo commit
git add README.md
git commit -m "Initial commit"

# 4. Crea repository su Forgejo (via web UI)
# Poi collega il remote:
git remote add origin https://git.emanuelegori.uno/emanuele/mio-progetto.git

# 5. Push al server
git push -u origin main

Opzioni comuni

Opzione Descrizione
-b <branch> Nome del branch iniziale
--bare Crea repository bare
--initial-branch=<nome> Nome branch iniziale (Git 2.28+)

Note

  • Non serve git init se hai già fatto git clone
  • Puoi inizializzare Git anche in directory con file esistenti
  • La directory .git è nascosta, visualizzala con ls -la

git remote

Sintassi

git remote [-v | --verbose]
git remote add <nome> <url>
git remote remove <nome>
git remote rename <vecchio> <nuovo>
git remote set-url <nome> <nuova-url>
git remote show <nome>

Spiegazione

Gestisce i repository remoti collegati al tuo repository locale. I remote sono riferimenti a repository su server (come Forgejo) che permettono di sincronizzare il codice.

Esempi pratici

Visualizzare remote configurati:

git remote -v

Output esempio:

origin  https://git.emanuelegori.uno/emanuele/boilerbot.git (fetch)
origin  https://git.emanuelegori.uno/emanuele/boilerbot.git (push)

Aggiungere un nuovo remote:

git remote add origin https://git.emanuelegori.uno/emanuele/mio-progetto.git

"origin" è il nome standard per il remote principale.

Aggiungere remote secondario:

git remote add backup https://git.emanuelegori.uno/emanuele/mio-progetto-backup.git

Puoi avere più remote con nomi diversi.

Cambiare URL del remote (da SSH a HTTPS):

git remote set-url origin https://git.emanuelegori.uno/emanuele/boilerbot.git

Utile se hai clonato con SSH e vuoi passare a HTTPS.

Verificare prima l'URL corrente:

git remote get-url origin

Rimuovere un remote:

git remote remove backup

Rinominare un remote:

git remote rename origin upstream

Informazioni dettagliate su un remote:

git remote show origin

Output mostra:

  • URL fetch/push
  • Branch remoti
  • Branch locali configurati per push/pull
  • Stato sincronizzazione

Caso d'uso: Repository con HTTPS

Dopo aver clonato o inizializzato, verifica sempre il remote:

# Verifica remote
git remote -v

# Se devi cambiare da SSH a HTTPS:
git remote set-url origin https://git.emanuelegori.uno/emanuele/repo.git

# Verifica cambio
git remote -v

Workflow multi-remote

# Remote principale (tuo Forgejo)
git remote add origin https://git.emanuelegori.uno/emanuele/progetto.git

# Remote secondario (es. backup o collaborazione)
git remote add collaboratore https://git.emanuelegori.uno/altro-user/fork-progetto.git

# Push a origin (default)
git push origin main

# Push a remote specifico
git push collaboratore main

# Pull da remote specifico
git pull collaboratore main

Opzioni comuni

Comando Descrizione
git remote Lista remote semplice
git remote -v Lista con URL (verbose)
git remote add <nome> <url> Aggiunge remote
git remote remove <nome> Rimuove remote
git remote rename <old> <new> Rinomina
git remote set-url <nome> <url> Cambia URL
git remote show <nome> Info dettagliate
git remote prune <nome> Rimuove ref obsoleti

Note

  • "origin" è solo una convenzione, puoi chiamarlo come vuoi
  • Un repository può avere multipli remote
  • Il remote di default per git push va configurato con -u al primo push
  • Con HTTPS, ricordati di usare il PAT come password

🔗 Collegamenti


📝 Riepilogo comandi

# CLONE
git clone https://git.emanuelegori.uno/user/repo.git
git clone -b branch https://git.emanuelegori.uno/user/repo.git
git clone --depth 1 https://git.emanuelegori.uno/user/repo.git

# INIT
git init
git init -b main
git init nuovo-progetto

# REMOTE
git remote -v
git remote add origin https://git.emanuelegori.uno/user/repo.git
git remote set-url origin https://git.emanuelegori.uno/user/repo.git
git remote remove nome
git remote show origin