git init
Inizializza repo nella directory corrente
Esempio pratico
git init # oppure con nome
git init myproject
developer reference
Reference pratica per usare Git tutti i giorni con ricerca, copia comando e stampa PDF. Finalmente un sito che non ti obbliga a scavare in dieci tab aperti.
42 comandi visibili
git init
Inizializza repo nella directory corrente
git init # oppure con nome
git init myproject
git clone https://github.com/user/repo.git
# in cartella specifica
git clone <url> myfolder
# solo ultimo commit
git clone --depth 1 <url>
git remote add origin <url>
Collega repo locale a uno remoto
git remote add origin https://github.com/user/repo.git
git status
Mostra file modificati, staged, untracked
git status
git status -s # output compatto
git add <file>
Aggiunge file all'area di staging
git add index.html
git add . # tutto
git add -p # interattivo hunk per hunk
git commit -m "<msg>"
Committa staged con messaggio
git commit -m "feat: add login page"
git commit -am "fix: typo" # stage+commit
git commit --amend
Modifica l'ultimo commit (msg o contenuto)
Sostituisce l’ultimo commit. Concorda la modifica se il commit è già pubblicato.
git commit --amend -m "nuovo msg"
# aggiungi file dimenticati
git add file.txt && git commit --amend --no-edit
git rm --cached <file>
Rimuove il file dall’indice Git; il file locale rimane. Fai un commit per interromperne il tracciamento.
Il prossimo commit rimuove il file dal repository; la copia locale rimane.
git rm --cached secret.env
git stash
Metti da parte modifiche non committed
git stash
git stash push -m "wip: login form"
git stash list
Elenca tutti gli stash
git stash list
git stash pop
Applica uno stash e lo rimuove solo se l’applicazione riesce
Controlla i conflitti prima di continuare. Git mantiene lo stash se l’applicazione fallisce.
git stash pop
git stash pop stash@{2}
git stash apply [stash@{n}]
Applica stash senza rimuoverlo
git stash apply stash@{1}
git stash drop [stash@{n}]
Elimina uno stash specifico
Elimina lo stash selezionato. Il recupero non è garantito.
git stash drop stash@{0}
git stash branch <branch>
Crea branch dallo stash e lo applica
git stash branch feature/login stash@{0}
git branch
Elenca branch locali (-a includi remoti)
git branch
git branch -a
git switch -c <name>
Crea e passa al nuovo branch
git switch -c feature/auth
# vecchio stile
git checkout -b feature/auth
git switch <branch>
Passa a branch esistente
git switch main
git switch - # branch precedente
git merge <branch>
Unisce branch nel branch corrente
git switch main
git merge feature/auth
git merge --no-ff feature/auth # conserva merge commit
git rebase <branch>
Riscrive cronologia branch su nuova base
Riscrive la cronologia dei commit. Concorda il rebase di un branch condiviso.
git switch feature/auth
git rebase main
git rebase -i HEAD~3 # interattivo: squash/reorder
git cherry-pick <hash>
Applica commit specifico al branch corrente
git cherry-pick a3f1c2e
git cherry-pick a3f1c2e^..b7d9e0f # range
git branch -d <branch>
Elimina branch (solo se mergiato)
git branch -d feature/auth
git branch -D feature/auth # forza
git remote -v
git fetch [remote]
Scarica aggiornamenti senza merge
git fetch origin
git fetch --all
git pull
git pull --rebase # con rebase
git push <remote> <branch>
Invia commit al remote
git push origin main
git push -u origin feature/auth # setta tracking
git push --force-with-lease
Force push sicuro (fallisce se remote ha nuovi commit)
Riscrive la cronologia remota. Verifica il branch e lo stato remoto atteso prima del push.
git push --force-with-lease
git log --oneline --graph
Cronologia compatta con grafico branch
git log --oneline --graph --decorate
git log -5 --oneline # ultimi 5
git log -S "<string>"
Trova commit che aggiungono/rimuovono una stringa
git log -S "apiKey" --oneline
git blame <file>
Chi ha scritto ogni riga del file
git blame src/main.py
git blame -L 10,20 src/main.py
git reflog
Cronologia di tutti i movimenti di HEAD
git reflog
# recupera commit perso
git checkout HEAD@{2}
git restore <file>
Scarta modifiche locali non staged
Scarta le modifiche non staged al file selezionato. Git potrebbe non poterle recuperare.
git restore index.html
git restore . # tutto
git restore --staged <file>
Rimuove da staging, mantiene modifiche
git restore --staged secret.env
git reset HEAD~1
Annulla ultimo commit (mantiene modifiche)
Il reset mixed predefinito conserva i file ma svuota lo staging. --hard scarta anche le modifiche ai file tracciati.
git reset --soft HEAD~1 # mantiene staged
git reset HEAD~1 # unstage, mantiene file
git reset --hard HEAD~1 # DISTRUGGE modifiche
git revert <hash>
Crea commit che annulla un commit (sicuro per remote)
git revert a3f1c2e --no-edit
git clean -fd
Elimina file e dir untracked (irreversibile)
Elimina definitivamente file e directory non tracciati. Controlla prima con git clean -nd.
git clean -fdn # preview
git clean -fd
git diff
Modifiche non ancora staged
git diff
git diff src/main.py
git diff --staged
Modifiche staged pronte per il commit
git diff --staged
git diff <branch1> <branch2>
Confronta due branch
git diff main feature/auth
git diff --name-only main feature/auth
git config --global user.name "<name>"
Imposta nome utente globale
git config --global user.name "Enzo"
git config --global user.email "<email>"
Imposta email globale
git config --global user.email "enzo@example.com"
git config --global alias.<name> "<cmd>"
Crea alias per un comando
# git lg = log grafico
git config --global alias.lg "log --oneline --graph --decorate"
git config --list
Mostra tutta la configurazione attiva
git config --list --show-origin
Usa git restore --staged <file>. Per interrompere il tracciamento mantenendo la copia locale, usa git rm --cached <file> e fai un commit della rimozione.
Usa Stampa PDF. La versione stampabile include tutti i comandi e gli esempi pratici, anche nelle sezioni nascoste dalla ricerca.
Sì. Servi i file statici con un server HTTP locale. Ricerca, filtri e copia funzionano nel browser; il tester Regex richiede un contesto HTTP con worker abilitati.