Git distingue directory di lavoro, indice (stage) e cronologia dei commit. Un commit registra ciò che è nello stage; il push trasferisce commit a un repository remoto, non le modifiche non committate.
Configurare e iniziare
git config --global user.name "Nome Cognome"
git config --global user.email "nome@example.com"
git config --global core.editor vim
git initUsa --local per impostazioni specifiche di un repository. In alternativa a init puoi clonare il progetto con il suo URL HTTPS o SSH. Entrambi possono consentire il push, se autenticazione e permessi lo permettono.
Preparare un commit
git status
git diff
git add -- percorso/file
git diff --staged
git commit -m "Descrizione della modifica"git commit -a include modifiche e rimozioni di file già tracciati, ma non i nuovi file: non equivale a git add --all. Le regole di gitignore non smettono di tracciare file già presenti.
Leggere la storia
git log --oneline --decorate -10
git log --stat
git log -p -2
git log --since="2 weeks ago"Rami e integrazione
git switch -c nuova-funzionalita
git branch -vv
git fetch originFetch aggiorna i riferimenti remoti senza integrare il lavoro nel ramo corrente. Pull esegue anche l’integrazione secondo opzioni e configurazione. Dopo aver controllato lo stato, un pull --ff-only si ferma se la storia diverge invece di creare automaticamente un merge.
Per un merge passa prima al ramo di destinazione, poi usa git merge nome-ramo. In caso di conflitto, risolvi il contenuto, rimuovi i marcatori e verifica il risultato prima di aggiungerlo allo stage. I marcatori hanno questa struttura:
<<<<<<< HEAD
Versione corrente
=======
Versione del ramo integrato
>>>>>>> nome-ramoAnnullare con consapevolezza
git restore --staged -- percorso/file rimuove dallo stage senza scartare il lavoro. git restore -- percorso/file invece scarta le modifiche non in stage del file: controlla e salva prima ciò che serve. Per annullare un commit condiviso usa normalmente git revert, che crea un nuovo commit; amend e reset riscrivono la storia.
Pubblicazione
git remote -v
git push --dry-run origin nome-ramo
git push -u origin nome-ramoIl dry run mostra l’operazione di push prevista. Un diff dello stage non è un dry run del push. Prima di eliminare rami remoti o riscrivere commit condivisi concorda il cambiamento con chi usa il repository.
Controllare il risultato di un flusso completo
Dopo il commit usa git show --stat HEAD e git status. Dopo il push usa git fetch origin, poi git rev-list --left-right --count HEAD...origin/nome-ramo: 0 e 0 indicano lo stesso insieme di commit. Se i numeri differiscono, controlla la storia prima di integrare o riscrivere. I nomi di ramo e i percorsi negli esempi vanno sostituiti con quelli del progetto.