Cheatsheet per Git in italiano
Published at February 15, 2021 – 5 min read
Git è uno degli strumenti SCM 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 libro.
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.
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 ^ è 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 protected]>' | 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 | 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 | tira i tag da remoto |
git pull my-remote my-branch | tira 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 msg |
git stash list | elenca tutti gli stash |
git stash pop | cancella lo stash recente e lo applica |
git stash pop [email protected]{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 [email protected]{1} | crea un ramo dal tuo stash |
git stash drop [email protected]{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/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. | 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 |