Cheatsheet per Git in italiano
Pubblicato il – 5 minuti di lettura – 1000 parole

Git è uno degli strumenti di controllo versione più popolari. Può essere utilizzato per progetti grandi e piccoli ed è indipendente dai tipi di contenuto nei progetti. In effetti, usiamo git per gestire i contenuti dei capitoli di questo blog.
Git è diverso da altri strumenti SCM perché è distribuito, il che significa che non esiste un repository di codice centrale. Per questo motivo, git è diventato molto popolare per lo sviluppo di ciò che è noto come software libero e open source, o FOSS. La filosofia alla base di un sistema decentralizzato è che resiliente a un singolo punto di errore, il che aiuta a garantire che le biblioteche FOSS rimangano aperte e libere.
Qui di seguito un raccolta di comandi utili da utilizzare per git. Dedicato a chi come me è un po’ pigro!
Comandi | Descrizione |
---|---|
git init | Avvia git nella directory corrente |
git clone <indirizzo> | Crea un repo git da un dato indirizzo (ottieni l’indirizzo dal tuo git-server) |
git clone <indirizzo> -b <nome_branco> <path/to/directory> | Clona un repo git dall’indirizzo nella directory data e fa il checkout del ramo dato |
git clone <indirizzo> -b <nome_ramo> --single-branch | Clona un singolo ramo |
git add file.txt | Aggiunge (fasi) file.txt al git |
git add * | Aggiunge (stages) tutte le nuove modifiche, cancellazioni, creazioni al git |
git reset file.txt | Rimuove il file.txt dallo stage |
git reset --hard | Rimuove tutte le modifiche non commesse, resetta i file in HEAD |
git rm file.txt | Rimuove il file.txt sia da git che dal file system |
git rm --cached file.txt | Rimuove solo il file.txt sia dall’indice git |
git status | Mostra le modifiche e le cose che non sono ancora in scena |
git branch | Mostra tutti i rami (il ramo corrente è mostrato con una stella) |
git branch my-branch | Crea il mio ramo |
git branch -d my-branch | Cancella my-branch |
git checkout mio-ramo | Passa al mio-ramo |
git merge my-branch | Unisce my-branch al ramo corrente |
git push origin --delete my-branch | Elimina il mio ramo remoto |
git branch -m <nome del nuovo ramo> | Rinomina il ramo |
git checkout --orfano <nome_ramo> | Esegue il checkout di un ramo senza storia di commit |
git branch -vv | Elenca tutti i rami e i loro upstream, così come l’ultimo commit sul ramo |
git branch -a | Elenca tutti i rami locali e remoti |
git cherry-pick <commit_id> | Unisce il commit specificato |
git cherry-pick <commit_id_A>^..<commit_id_B> | Seleziona l’intero intervallo di commit dove A è più vecchio di B (la ^ serve per includere anche A) |
git remote | Mostra i telecomandi |
git remote -v | Mostra il remoto per pull e push |
git remote add my-remote <indirizzo> | Crea un remoto (prendi l’indirizzo dal tuo git-server) |
git remote rm my-remote | Rimuove un remoto |
git log | Mostra il log dei commit |
git log --oneline | Mostra il log dei commit, ogni commit in una singola linea |
git log -p <nome_file> | Cambia nel tempo per uno specifico file |
git log <Branch1> ^<Branch2> | Elenca i commit nel branch1 che non sono nel branch2 |
git log -n <x> | Elenca gli ultimi x commit |
git log -n <x> --oneline | Elenca gli ultimi x commit, ogni commit in una singola linea |
git grep --heading --line-number '<stringa/regex>' | Trova le linee corrispondenti al pattern nei file tracciati |
git log --grep='<stringa/regex>' | Cerca il registro dei commit |
git commit -m "msg" | Commette i cambiamenti con un msg |
git commit --amend | Combina le modifiche con il commit precedente, o modifica il messaggio di commit precedente senza cambiare il suo snapshot |
git commit --amend --no-edit | Modifica un commit senza cambiare il suo messaggio di commit |
git commit --amend --author='Nome Autore <email@address.com>' | Modifica l’autore di un commit |
git push my-remote my-branch | Spinge i commit al my-remote nel my-branch (non spinge i tag) |
git revert <commit-id> | Annulla un commit creando un nuovo commit |
git show | Mostra uno o più oggetti (blob, alberi, tag e commit). |
git diff | Mostra i cambiamenti tra i commit, i commit e l’albero di lavoro |
git diff --color | Mostra i diff colorati |
git diff --staged | Mostra i cambiamenti in fase di commit |
git tag | Mostra tutti i tag |
git tag -a v1.0 -m "msg" | Crea un tag annotato |
git show v1.0 | Mostra la descrizione del tag version-1.0 |
git tag --delete v1.0 | Cancella il tag nella directory locale |
git push --delete my-remote v1.0 | Cancella il tag in my-remote (attenzione a non cancellare un ramo) |
git push my-remote my-branch v1.0 | Spinge il tag v1.0 a my-remote in my-branch |
git fetch --tags | Aggiorna i tag da remoto |
git pull my-remote my-branch | Aggiorna e cerca di unire my-branch da my-remote al ramo corrente |
git stash | Mette da parte i cambiamenti messi in scena e non messi in scena (lo stato di git sarà pulito dopo) |
git stash -u | Salva tutto, inclusi i nuovi file non tracciati (ma non .gitignore) |
git stash save "msg" | Salva con un messaggio |
git stash list | Elenca tutti gli stash |
git stash pop | Cancella lo stash recente e lo applica |
git stash pop stash@{2} | Cancella lo stash {2} e lo applica |
git stash show | Mostra la descrizione dello stash |
git stash apply | Mantiene lo stash e lo applica al git |
git stash branch my-branch stash@{1} | Crea un ramo dal tuo stash |
git stash drop stash@{1} | Cancella lo stash {1} |
git stash clear | Cancella tutto lo stash |
git rebase -i <commit_id> | Rebase i commit da un ID di commit |
git rebase --abort | Interrompe un rebase in corso |
git rebase --continue | Continua il rebase dopo aver risolto tutti i conflitti |
git clean -f | Pulisce permanentemente i file non tracciati |
git clean -f -d OPPURE git clean -fd | Per rimuovere permanentemente le directory |
git clean -f -X/git clean -fX | Per rimuovere definitivamente i file ignorati |
git clean -f -x/git clean -fx | Per rimuovere definitivamente i file ignorati e non ignorati |
git config --global --list | Elenca la configurazione git per tutti i repo |
git config --global --edit | Apre un editor per modificare il file git config |
git config --global alias.<handle> <comando> | Aggiunge alias git per velocizzare il flusso di lavoro, ad esempio se handle è st e il comando è status allora eseguendo git st verrà eseguito git status |