Non c'è affatto bisogno di un ambiente "cloud". Ogni sviluppatore dovrebbe avere il proprio ambiente di sviluppo. Questo può essere locale o su un server, e questo può o non può essere una macchina virtuale. Il punto importante è che gli sviluppatori possono lavorare da soli, senza sovrascrivere accidentalmente il lavoro di un altro membro del team.
Il controllo della versione è importante per la collaborazione perché consente di unire le modifiche di più membri del team senza sovrascrivere accidentalmente qualcosa. Con Git, un flusso di lavoro basato sulla richiesta di pull offre agli altri membri del team l'opportunità di rivedere le modifiche proposte prima che vengano unite nel ramo principale. I test automatici come parte di questa revisione sono considerati una best practice. Questi test automatici verrebbero generalmente eseguiti su alcuni build server, che potrebbero essere una VM su un server condiviso. Il build server viene eseguito automaticamente, quindi gli sviluppatori non devono eseguire il login tranne per il debug o l'amministrazione.
Il ramo principale può quindi essere distribuito in un ambiente di produzione. Ciò può accadere in modo semi-automatico se si sta tentando di eseguire la Distribuzione continua. Poiché tutte le modifiche sono già state testate e riviste come richiesta di pull, è sempre possibile distribuire il ramo principale. Se dovesse esserci un problema, puoi sempre ripristinare il ramo principale in uno stato precedente noto come buono e ridistribuirlo.
Soprattutto per Git, ci sono molti flussi di lavoro che discutono di come questi concetti generali possano essere strutturati con precisione. Differiscono in alcuni obiettivi, ad es. il popolare Git Flow assume rilasci poco frequenti e ben definiti. Soprattutto per webdev, un flusso di lavoro incentrato sulla distribuzione continua può essere più appropriato.
Anche questi flussi di lavoro variano in modo diverso. Finché c'è una sola squadra, non dovrebbe esserci un problema, ma più team che collaborano su un singolo codice base sono sempre più difficili. È quindi necessario avere un project manager o product manager che coordini il lavoro tra i team. Né il controllo della versione né le macchine virtuali possono risolvere problemi di comunicazione. Hai bisogno di persone per questo.