Configurazione iniziale ⤢ git configImposta nome, email o editor una volta sola per ogni repository. git config --global user.name "Ada" ⤢ git config --global aliasDefinisci una scorciatoia per un comando che digiti spesso. git config --global alias.co checkout ⤢ git initCrea un nuovo repository nella cartella corrente. git init ⤢ git cloneCopia un repository remoto sul tuo computer. git clone git@github.com:org/repo.git ⤢ git clone --depthCopia solo i commit più recenti di un singolo branch. git clone --depth 1 --single-branch git@github.com:org/repo.git Basi degli snapshot ⤢ git statusMostra cosa è in stage, cosa è modificato e cosa non è tracciato. git status -sb ⤢ git addMetti in stage le modifiche così entrano nel prossimo commit. git add src/app.ts ⤢ git add -pEsamina le modifiche blocco per blocco e metti in stage solo quelle che accetti. git add -p src/app.ts ⤢ git add -uMetti in stage le modifiche di ogni file tracciato senza aggiungere nuovi file. git add -u ⤢ git commitRegistra le modifiche in stage come nuovo commit. git commit -m "fix: null check" ⤢ git commit --amendSostituisci l'ultimo commit con uno corretto. git commit --amend -m "fix: handle empty input" ⤢ git diffMostra le modifiche non in stage, o quelle in stage con --staged. git diff --staged ⤢ git diff HEADMostra ogni modifica dall'ultimo commit, in stage o no. git diff HEAD Rami e merge ⤢ git branchElenca, crea o elimina branch. git branch feature-x ⤢ git branch -dElimina un branch già unito (-D forza l'eliminazione, -a elenca tutti i branch). git branch -d feature-x ⤢ git switchCambia branch (il sostituto moderno di checkout). git switch feature-x ⤢ git switch -cCrea un nuovo branch e passa a esso in un solo passo. git switch -c feature-x ⤢ git checkoutCambia branch o ripristina file (il comando più vecchio e generico). git checkout feature-x ⤢ git mergePorta le modifiche di un altro branch nel branch corrente. git merge feature-x ⤢ git merge --abortAnnulla un merge in conflitto e riporta il branch allo stato precedente. git merge --abort ⤢ git rebaseRiesegue i commit del branch corrente sopra un altro branch. git rebase main ⤢ git rebase -iUnisci, riordina o modifica i commit mentre li riesegue. git rebase -i main ⤢ git cherry-pickCopia un singolo commit da un altro branch su questo. git cherry-pick a1b2c3d ⤢ git tagContrassegna un commit con un'etichetta leggibile come una versione. git tag -a v1.2.0 ⤢ git worktreeAttiva un altro branch in una cartella separata contemporaneamente. git worktree add ../repo-feature feature-x Ispezionare la cronologia ⤢ git logSfoglia la cronologia dei commit. git log --oneline --graph --decorate ⤢ git log --allSfoglia la cronologia di ogni branch, non solo quella corrente. git log --oneline --graph --all ⤢ git showMostra il diff completo e il messaggio di un commit. git show HEAD ⤢ git blameMostra chi ha modificato per ultimo ogni riga di un file. git blame src/app.ts ⤢ git reflogMostra ogni commit a cui HEAD ha puntato, inclusi quelli scartati. git reflog ⤢ git bisectCerca nella cronologia per metà per trovare il commit che ha rotto qualcosa. git bisect start ⤢ git shortlogRiassume i commit per autore. git shortlog -sn ⤢ git describeNomina il commit corrente contando dal tag più vicino. git describe --tags Collaborazione remota ⤢ git remoteElenca o aggiunge repository remoti. git remote add origin <url> ⤢ git remote -vElenca i remoti con i loro URL di fetch e push. git remote -v ⤢ git fetchScarica le modifiche remote senza toccare i tuoi branch. git fetch origin ⤢ git fetch --pruneScarica le modifiche remote ed elimina i ref dei branch remoti cancellati. git fetch --prune ⤢ git pullScarica e unisce le modifiche remote del branch corrente. git pull --rebase ⤢ git pushInvia i commit locali al remoto. git push -u origin feature-x ⤢ git push --force-with-leaseSovrascrive il branch remoto, ma solo se nessuno ha spinto prima. git push --force-with-lease origin feature-x Annullare modifiche ⤢ git restoreScarta le modifiche dell'albero di lavoro, oppure le toglie dallo stage. git restore src/app.ts ⤢ git restore --stagedToglie un file dallo stage mantenendo le modifiche nell'albero di lavoro. git restore --staged src/app.ts ⤢ git resetSposta il puntatore del branch corrente e, a scelta, l'indice. git reset --hard HEAD~1 ⤢ git revertAggiunge un nuovo commit che annulla uno precedente (sicuro da condividere). git revert HEAD ⤢ git cleanElimina file e cartelle non tracciati. git clean -fd Stash ⤢ git stashSalva il lavoro non committato e azzera l'albero di lavoro. git stash -u ⤢ git stash listMostra ogni stash che hai salvato. git stash list ⤢ git stash applyRiapplica uno stash e lo mantiene in memoria. git stash apply stash@{1} ⤢ git stash dropElimina uno stash che non serve più. git stash drop stash@{1} ⤢ git stash popRiapplica lo stash più recente e lo elimina. git stash pop File e sottomoduli ⤢ git mvSposta o rinomina un file e mette in stage la modifica. git mv old.ts src/new.ts ⤢ git rmElimina un file e mette in stage l'eliminazione. git rm src/old.ts ⤢ git submoduleTraccia un altro repository come cartella dentro questa. git submodule add git@github.com:org/lib.git lib ⤢ git sparse-checkoutAttiva solo le cartelle indicate da un repository di grandi dimensioni. git sparse-checkout set src docs ⤢ git archiveEsporta l'albero di un commit come file tar o zip. git archive -o repo.zip HEAD