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 initse hai già fattogit clone - Puoi inizializzare Git anche in directory con file esistenti
- La directory
.gitè nascosta, visualizzala conls -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 pushva configurato con-ual primo push - Con HTTPS, ricordati di usare il PAT come password
🔗 Collegamenti
- Prossimo: Staging e Commit →
- Indice: ← Torna all'indice
📝 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