Git legge la configurazione da piu file in ordine: system, global (~/.gitconfig), local (.git/config), worktree (quando abilitato), e command-line (-c).
La maggior parte delle piattaforme si aspetta questo flusso: fork del repo upstream, clonare il proprio fork, branch per il cambiamento, push, aprire una pull request.
Un monorepo contiene molti progetti in un solo repository — refactor migliori, modifiche atomiche tra progetti, un solo grafo di dipendenze. Il costo: la scala.
I workflow reali spesso coinvolgono piu di un remote: un origin per il proprio fork, un upstream per il repo canonico, piu mirror, target di deploy, e fork per ambiente.
Il sparse checkout popola solo un sottoinsieme del working tree di un repo, mantenendo tutti i metadati e la storia. Per i monorepo, puo significare estrarre l'1% dei file e ignorare il restante 99%.
Lo stash e piu capace del semplice save/pop che si vede di solito. Usato bene, e un blocco appunti personale per cambi di contesto che batte il committare WIP nel branch.
git archive produce uno snapshot tar o zip di un tree — codice senza storia, perfetto per i rilasci. git bundle produce un file di trasporto portatile contenente oggetti e ref — perfetto per il trasferimento offline di un intero repo.
git notes allega metadati arbitrari ai commit esistenti senza cambiare i loro SHA. Review, stati di build, sign-off, metriche di performance — qualsiasi cosa si voglia associare a un commit puo vivere nelle note.
git range-diff (introdotto in Git 2.19) confronta due range di commit, abbinandoli per similitudine e mostrando le modifiche tra le versioni. E indispensabile quando si revisionano reroll di serie di patch.