Introducción
Suponga que tiene almacenado en su máquina un folder de especial importancia, al cual le llamaremos proyecto. Este proyecto puede contener uno o más archivos de cualquier tipo (por ejemplo, el código fuente de una aplicación, un libro, un reporte de investigación, etc.). Cada vez que se realiza algún cambio en el proyecto (como la adición, el borrado o la edición de algún archivo contenido en el proyecto) se genera una nueva versión del mismo. Un Sistema de Control de Versiones permite administrar el historial de versiones generadas en un proyecto determinado, de tal forma que éste se pueda consultar, así como para restaurar el proyecto a una versión anterior (por ejemplo, al introducir errores en una aplicación). Al conjunto de versiones generadas se le conoce como repositorio del proyecto.
A pesar de que todos los SCV (Sistemas de Control de Versiones) tienen el mismo objetivo, cada uno de ellos lo cumple de forma distinta. Los SCV pueden clasificarse en locales, centralizados y distribuidos. Los primeros se caracterizan por trabajar sólo sobre proyectos que se encuentren en la máquina del usuario, por ejemplo, rcs. Los SCV centralizados son aquellos en los cuales el repositorio se encuentra en una máquina central a la que todos los colaboradores deben tener acceso. Esto implica que para la mayoría de las operaciones sobre el repositorio se requiere conexión a Internet. Además, la máquina central, al igual que la local, representa un punto de quiebre; es decir, si los archivos de la máquina central dejan de ser accesibles, no hay forma de seguir contribuyendo al proyecto. Ejemplos de SCV centralizados son CVS y Subversion.
Finalmente están los SCV distribuidos, en los cuales el repositorio se encuentra en la máquina local, pero existe la posibilidad de compartirlo con los colaboradores a través de un proceso de clonación. En otras palabras, todos los colaboradores tienen su propio repositorio, por lo que no se requiere conexión permanente a Internet, sino sólo para sincronizar los repositorios. Una desventaja es que el repositorio abarcará espacio en la máquina de cada colaborador. Git y Mercurial funcionan de esta manera.
Una alternativa a los SCV que aún es utilizada son los respaldos manuales de cada versión del proyecto. Aunque a primera vista parece lo más simple, se puede desperdiciar mucho espacio en la memoria y representa una pérdida significativa de tiempo, además se corre el peligro de introducir errores humanos (por ejemplo, borrar una versión de forma accidental).