Guida rapida Git

Comandi Git essenziali per il controllo di versione – ramificazione, commit, merge e collaborazione.

Impostazione e configurazione

Configura Git e imposta la tua identità

# Imposta il tuo nome e l'email
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

# Controlla la tua configurazione
git config --list

# Imposta il nome del ramo predefinito
git config --global init.defaultBranch main
Configurazione iniziale
# Imposta l'editor predefinito
git config --global core.editor "code --wait"

# Abilita l'output a colori
git config --global color.ui auto

# Configura l'helper delle credenziali (Windows)
git config --global credential.helper wincred
Configurazione aggiuntiva

Creazione di repository

Inizializza o clona repository Git

# Inizializza un nuovo repository
git init

# Inizializza con nome di ramo specifico
git init -b main

# Clona un repository esistente
git clone https://github.com/user/repo.git

# Clona in una directory specifica
git clone https://github.com/user/repo.git my-folder
Inizializzazione del repository

Flusso di lavoro di base

Comandi comuni per l'uso quotidiano di Git

# Controlla lo stato del repository
git status

# Aggiungi file all'area di staging
git add file.txt
git add .                 # Aggiungi tutti i file
git add *.js              # Aggiungi tutti i file JavaScript

# Effettua il commit delle modifiche
git commit -m "Commit message"
git commit -am "Message"  # Aggiungi e commetti i file tracciati

# Visualizza la cronologia dei commit
git log
git log --oneline         # Vista compatta
git log --graph           # Mostra il grafo dei rami
Comandi quotidiani

Ramificazione e unione

Crea e gestisci rami

# Elenca i rami
git branch                # Rami locali
git branch -a             # Tutti i rami (locali + remoti)

# Crea un nuovo ramo
git branch feature-branch

# Passa a un ramo
git checkout feature-branch
git switch feature-branch  # Alternativa moderna

# Crea e passa a un nuovo ramo
git checkout -b feature-branch
git switch -c feature-branch
Gestione dei rami
# Unisci un ramo nel ramo corrente
git merge feature-branch

# Elimina un ramo
git branch -d feature-branch    # Eliminazione sicura
git branch -D feature-branch    # Eliminazione forzata

# Rinomina un ramo
git branch -m old-name new-name
Unione e pulizia

Repository remoti

Lavora con repository remoti

# Elenca i repository remoti
git remote -v

# Aggiungi un repository remoto
git remote add origin https://github.com/user/repo.git

# Recupera le modifiche dal remoto
git fetch origin

# Esegui il pull delle modifiche dal remoto
git pull origin main

# Invia le modifiche al remoto
git push origin main
git push -u origin main   # Imposta l'upstream e invia
Operazioni remote
# Rimuovi un remoto
git remote remove origin

# Rinomina un remoto
git remote rename old-name new-name

# Cambia l'URL del remoto
git remote set-url origin https://github.com/user/new-repo.git
Gestione remota

Annullamento delle modifiche

Ripristina o resetta le modifiche

# Scarta le modifiche nella directory di lavoro
git restore file.txt
git checkout -- file.txt  # Metodo vecchio

# Rimuovi i file dall'area di staging
git restore --staged file.txt
git reset HEAD file.txt   # Metodo vecchio

# Modifica l'ultimo commit
git commit --amend -m "New message"

# Ripristina un commit (crea un nuovo commit)
git revert <commit-hash>
Operazioni di annullamento
# Reset al commit precedente (attenzione!)
git reset --soft HEAD~1   # Mantieni le modifiche in staging
git reset --mixed HEAD~1  # Mantieni le modifiche non staged
git reset --hard HEAD~1   # Scarta tutte le modifiche

# Reset a un commit specifico
git reset --hard <commit-hash>
Operazioni di reset

Accantonamento

Salva temporaneamente le modifiche

# Accumula le modifiche correnti
git stash
git stash save "Work in progress"

# Elenca gli stash
git stash list

# Applica lo stash
git stash apply           # Mantieni lo stash
git stash pop             # Applica e rimuovi lo stash

# Applica uno stash specifico
git stash apply stash@{0}

# Elimina lo stash
git stash drop stash@{0}
git stash clear           # Elimina tutti gli stash
Gestione degli stash

Visualizzazione delle modifiche

Ispeziona differenze e cronologia

# Mostra le modifiche non staged
git diff

# Mostra le modifiche staged
git diff --staged
git diff --cached

# Mostra le modifiche tra commit
git diff commit1 commit2

# Mostra le modifiche in un file specifico
git diff file.txt
Comandi diff
# Mostra i dettagli del commit
git show <commit-hash>

# Mostra il file in un commit specifico
git show <commit-hash>:file.txt

# Mostra chi ha modificato cosa in un file
git blame file.txt
Comandi di ispezione

Etichettatura

Crea e gestisci etichette di versione

# Elenca le etichette
git tag

# Crea un tag leggero
git tag v1.0.0

# Crea un tag annotato
git tag -a v1.0.0 -m "Version 1.0.0"

# Tagga un commit specifico
git tag -a v1.0.0 <commit-hash> -m "Message"

# Invia i tag al remoto
git push origin v1.0.0
git push origin --tags    # Invia tutti i tag

# Elimina il tag
git tag -d v1.0.0
git push origin --delete v1.0.0
Operazioni sulle etichette

Comandi utili

Altri comandi Git utili

# Pulisci i file non tracciati
git clean -n              # Esecuzione di prova
git clean -f              # Rimuovi i file
git clean -fd             # Rimuovi file e directory

# Cerca nel repository
git grep "search term"

# Mostra chi ha modificato un file
git log --follow file.txt

# Crea alias
git config --global alias.st status
git config --global alias.co checkout
Utility utili
# Ignora le modifiche al file
git update-index --assume-unchanged file.txt

# Riprendi il tracciamento delle modifiche al file
git update-index --no-assume-unchanged file.txt

# Mostra i file tracciati
git ls-files
Tracciamento dei file
Guida rapida Git