Insieme di pratiche che tentano di rendere sistematico il processo di sviluppo, tenendo tracia dei cambiamenti in modo che il prodotto sia in ogni istante in uno stato ben definito
Approccio decentralizzato:
- lavorare anche offline (avere tutto il repository in locale)
- molto più veloce dato che non si passa dalla rete
- supporta diversi modi di lavorare