Version control software, also known as revision control or source control systems, is used to track changes to software development projects, and allow team members to change and collaborate on the same files. Version control software allows developers to work simultaneously on code and isolate their own work through what are known as branches. Branches keep code changes protected from the changes in other branches, but they can be merged together if and when the developer is ready. Version control systems allow developers to automatically track their work, see a history of all changes, and revert to previous versions of a project when needed. All code changes and branches are kept in a repository (often referred to as the “repo").
Version control systems are used by software development teams to streamline the development process, manage code for multiple projects, and maintain a history of code changes. When choosing a version control software, users often need a version control hosting solution to host their master repository where developers commit their code changes. Developers often use version control clients to manage the functionality of their version control systems through a graphical user interface (GUI). Version control systems integrate with a variety of software development tools, including IDE, build automation software, and PaaS providers.
To qualify for inclusion in the Version Control Software category, a product must:
Provide a mechanism for developers to keep track of code changes
Allow developers to see a history of changes
Allow developers to work on the same code files at the same time
Allow developers to isolate their code through branching
Merge code from different branches on command
Show developers conflicts on code merges and allow developers to resolve them
Allow developers to revert their changes to a previous state