Skip to content

Promemoria dei comandi Git

Git è un sistema di controllo di versione distribuito open-source, progettato per gestire progetti da piccoli a molto grandi con rapidità ed efficienza. Git è stato sviluppato da Linus Torvalds per aiutare a gestire lo sviluppo del kernel Linux.

Basi di Git

git init <directory>

Crea un repository Git vuoto nella directory specificata. Senza argomenti, inizializza la directory corrente.

git clone <repo>

Clona il repository situato in <repo> sulla macchina locale. Il repository sorgente può trovarsi sul filesystem locale o su una macchina remota tramite HTTP o SSH.

git config user.name <name>

Definisce il nome dell’autore per tutti i commit nel repository corrente.

git add <directory>

Aggiunge i contenuti modificati in <directory> per il prossimo commit (staging).

git commit -m "<message>"

Sottopone a commit l’istantanea in fase di staging, usando <message> come messaggio di commit.

git status

Elenca i file che sono in fase di staging, non in staging e non tracciati.

git log

Visualizza l’intera cronologia dei commit nel formato predefinito.

git diff

Confronta le differenze tra la directory di lavoro e l’area di staging.

Annullare le modifiche

git revert <commit>

Crea un nuovo commit che annulla tutte le modifiche apportate nel <commit> e le applica al ramo attuale.

git reset <file>

Rimuove lo <file> dall’area di staging, ma mantiene invariata la directory di lavoro. Questo toglie il file dallo staging senza sovrascrivere le modifiche.

git clean -n

Mostra quali file verrebbero rimossi dalla directory di lavoro. Usa l’opzione -f al posto di -n per eseguire la pulizia.

Riscrivere la cronologia di Git

git commit --amend

Modifica l’ultimo commit. Se ci sono modifiche in staging, verranno incluse nel commit modificato.

git rebase <base>

Esegue il rebase del ramo corrente su <base>. <base> può essere un ID commit, un nome ramo, un tag o HEAD.

git reflog

Permette di visualizzare tutti i log delle operazioni su tutti i rami (inclusi i commit eliminati e i reset).

Rami Git (Branch)

git branch

Elenca tutti i rami. Aggiungi un argomento <branch> per creare un nuovo ramo chiamato <branch>.

git checkout -b <branch>

Crea e attiva un nuovo ramo chiamato <branch>. Ometti -b per attivare un ramo esistente.

git merge <branch>

Unisce il ramo <branch> nel ramo corrente.

Repository remoti

git remote add <name> <url>

Aggiunge un nuovo repository remoto. Puoi quindi usare <name> come scorciatoia per <url> in altri comandi.

git fetch <remote> <branch>

Scarica tutti gli aggiornamenti per il <ramo> specificato dal repository, ma non li unisce con il ramo locale.

git pull <remote>

Scarica la copia remota del ramo corrente e la unisce immediatamente alla copia locale.

git push <remote> <branch>

Invia il ramo a <remote>, insieme ai commit e agli oggetti necessari. Crea un ramo con nome nel repository remoto se non esiste.

Configurazione (git config)

git config --global user.name <name>

Definisce il nome dell’autore per tutti i commit dell’utente corrente.

git config --global user.email <email>

Definisce l’email dell’autore per tutti i commit dell’utente corrente.

git config --global alias.<alias-name> <git-command>

Crea una scorciatoia (alias) per un comando Git.

git config --system core.editor <editor>

Imposta l’editor di testo utilizzato dai comandi per tutti gli utenti sul computer.

git config --global --edit

Apre il file di configurazione globale in un editor di testo per la modifica manuale.

Log (git log)

git log -<limit>

Mostra gli ultimi <limit> commit.

git log --oneline

Visualizza la cronologia dei commit comprimendo ogni commit in una sola riga.

git log -p

Visualizza la cronologia dei commit con il diff completo per ogni commit.

git log --stat

Visualizza la cronologia dei commit, inclusi i file modificati e il numero di righe aggiunte o rimosse per ogni file.

git log --author="<pattern>"

Cerca i commit di un autore specifico.

git log --grep="<pattern>"

Cerca nella cronologia dei commit usando espressioni regolari (regex).

git log <since>..<until>

Mostra i commit avvenuti tra <since> e <until>.

git log -- <file>

Mostra solo i commit che includono il file specificato.

Differenze (git diff)

git diff HEAD

Confronta la directory di lavoro con il repository (dopo git commit).

git diff --cached

Confronta l’area di staging (dopo git add) con il repository.

Reset (git reset)

git reset

Ripristina l’area di staging per farla corrispondere all’ultimo commit, lasciando invariata la directory di lavoro.

git reset --hard

Ripristina sia l’area di staging che la directory di lavoro all’ultimo commit, sovrascrivendo tutte le modifiche.

git reset <commit>

Sposta la punta del ramo corrente indietro al <commit> e ripristina l’area di staging, senza toccare la directory di lavoro.

git reset --hard <commit>

Come sopra, ma ripristina anche la directory di lavoro. Elimina le modifiche non committate e tutti i commit dopo il <commit>.

Recupero (git pull)

git pull --rebase <remote>

Scarica la copia remota e riesegue il rebase della copia locale su di essa invece di eseguire il merge.

Invio (git push)

git push <remote> --force

Forza l’invio delle modifiche (force push).

git push <remote> --all

Invia tutti i rami locali al remoto specificato.

git push <remote> --tags

Invia tutti i tag locali al repository remoto.