Los programas para control de versiones son un grupo de aplicaciones originalmente ideadas para gestionar ágilmente los cambios en el código fuente de los programas y poder revertirlos, cuyo ámbito ha sido ampliado pasando del concepto control de versiones al de gestión de configuración de software, en el que se engloban todas las actividades que pueden realizarse por un equipo sobre un gran proyecto software u otra actividad que genere ficheros digitales (por ejemplo: documentos, ofertas, dibujos, esquemas, etcétera).
La gestión de versiones estaba orientada a ficheros individuales, que generalmente eran absorbidos o reemplazados por otros ficheros.
Con el advenimiento de las redes, los desarrolladores usan un repositorio central al que acceden mediante un cliente en su máquina.
Con el vuelco causado por las redes públicas (Usenet, UUCP, Internet, etcétera) distinguimos entre programas abiertos (código fuente disponible) y propietarios (comerciales).
En el modelo distribuido, cada desarrollador trabaja directamente con su repositorio local, y los cambios se comparten entre repositorios en un paso posterior.