Systemy kontroli wersji (VCS) ewoluowały od prostych lokalnych rozwiązań, takich jak RCS (Revision Control System), przez scentralizowane systemy CVS i SVN (Subversion), aż po nowoczesne systemy rozproszone, jak Git i Mercurial. Każda z tych generacji wnosiła istotne usprawnienia, które odpowiadały na rosnące wymagania branży. Scentralizowane VCS rozwiązały problem współdzielenia kodu w zespole, ale wprowadziły pojedynczy punkt awarii oraz konieczność stałej łączności z serwerem.
Rozproszone systemy kontroli wersji, na czele z Gitem, całkowicie wyeliminowały te ograniczenia, ponieważ każda lokalna kopia repozytorium zawiera pełną historię projektu. Oznacza to, że programista może pracować w pełni offline, a jednocześnie ma dostęp do całej historii zmian, gałęzi i znaczników. Co więcej, Git stosuje kryptograficzne sumy kontrolne SHA-1 do identyfikacji każdego obiektu w repozytorium, co gwarantuje integralność danych i utrudnia nieautoryzowane modyfikacje historii.