Version control का इस्तमाल होता है manage करने के लिए multiple versions की computer files और programs को. एक version control system, या VCS, प्रदान करता है दो primary data management capabilities. वहीँ ये allow करता है users को करने के लिए
1) Files को lock करना जिससे की उन्हें केवल edit किया जा सके एक इन्सान के द्वारा एक समय में
2) बदलाव को track करने के लिए जो की files में किये जा रहे हों.
अगर आप केवल एक ऐसे ही इन्सान हो जो की editing कर रहा हो एक document की, तब ऐसे में कोई जरुरत ही नहीं है की आप एक file को lock करें editing करने के लिए. वहीँ, अगर एक team हो developers की जो की मिलकर काम कर रहे होते हैं एक project में, तब ये काफ़ी जरूरी है की कोई दो इन्सान एक समान file को एक ही समय में editing न करें. और ऐसा जब भी होता है तब ये मुमकिन है की एक इन्सान accidentally overwrite कर दे उन changes को जिसे की दुसरे के द्वारा किया गया हो.
यही कारण है की, version control allow करता है users को “check out” करने के लिए जब वो files की editing करना चाहें. जब एक file को checked out किया जा चूका हो एक shared file server से, तब ऐसे में इसे edit नहीं किया जा सकता है दुसरे users के द्वारा. जब एक person ख़त्म कर देता है file की editing करना, तब वो किये गए changes को save कर सकता है और साथ में file को “check in” भी कर सकता है जिससे की दुसरे users भी उस file को edit कर पायें.
Version control भी allow करते हैं की users files में किये गए changes को track कर पायें. इस type की version control को अक्सर इस्तमाल किया जाता है software development में और इसे कहा जाता है “source control” या “revision control.”
Popular version control systems जैसे की Subversion और CVS allow करते हैं developers को की वो save कर सकें incremental versions की programs को और source code files को development process के दौरान ही. ये प्रदान करती है कुछ ऐसी capability जिससे की rollback किया जा सके एक earlier version के program को अगर जरुरत पड़े तब. उदाहरण के लिए, अगर bugs पाई गयी एक नए version के software program में, तब developer आसानी से review कर सकती है previous version को जब वो code की debugging कर रहे हों.
Version control software को चाहिए की सभी files को saved किया जाये एक central location में. इस location को कहा जाता है repository और इसमें रहती है सभी पहले की और current versions की files जिन्हें की manage किया जाता है VCS के द्वारा. जब भी एक नयी file को create किया जाता है या एक current file को update किया जाता है, तब changes को “committed” किया जाता है repository में, जिससे की latest version हमेशा सभी users को available मिले.