大規模なソフトウェアプロジェクトでは、すべての変更を同期させ、競合、エラー、および多くの人が同じソースコードに取り組んでいることから派生したあらゆる種類の問題を回避することは非常に困難です。

たとえば、2人の開発者が同じコードセクションで異なる変更を加えることができます。または、コードの一部が他の場所での変更によって影響を受ける可能性があります。または、複数の開発者などに影響を逆転させる必要があります。

バージョンコントロール（英語のVCS）を許可します。
一方では、すべての変更のストーリーを維持し、必要に応じてそれらを逆転させることができます。
また、同じコードで複数の開発者の作業を整理します。

VCが通常持っている機能の中で：
 - それらを実行する前に、レビューの変更を提案します。
 - 変更を完全にまたは部分的に戻します。
 - 変更を組み合わせます。
 - 競合を解決します。

現在、多くのオプションが利用可能ですが、最も人気のあるものはGit（Linus Torvaldsによって開発）です。
これは主なVCのリストです。
    ＃1）git
    ＃2）CVS
    ＃3）SVN
    ＃4）水銀
    ＃5）単調
    ＃6）バザール
    ＃7）TFS
    ＃8）VSTS
    ＃9）Perforce Helix Core
    ＃10）IBM Rating ClearCase
En un proyecto grande de Software es muy complicado sincronizar todos los cambios, evitar conflictos, errores y todo tipo de problemas derivados de tener a muchas personas trabajando sobre el mismo código fuente.

Por ejemplo, dos desarrolladores podrían hacer distintos cambios en la misma sección de código, o una parte del código podría verse afectada por un cambio en otra parte, o un cambio debe ser revertido afectando múltiples desarrolladores, etc.

Un control de versiones (VCS en inglés) permite:
Por un lado, mantener una historia de todos los cambios, permitiendo revertirlos si es necesario.
Y además organizar el trabajo de múltiples desarrolladores sobre el mismo código.

Entre las capacidades que suelen tener los VCS encontramos:
- Proponer cambios para revisión antes de realizarlos.
- Revertir cambios totalmente o parcialmente.
- Mezclar cambios.
- Resolver conflictos.

Actualmente hay muchas opciones disponibles, aunque la más popular es Git (desarrollada por Linus Torvalds).
Esta es una lista de los principales VCS:
    #1) Git
    #2) CVS
    #3) SVN
    #4) Mercurial
    #5) Monotone
    #6) Bazaar
    #7) TFS
    #8) VSTS
    #9) Perforce Helix Core 
    #10) IBM Rational ClearCase