A larger software project is not developed in hours but in weeks, months or years. Software can also be developed in teams. Both of these mean that the code is likely to change over time. This creates the need to track changes and have a clear understanding about what the most recent version of the code is, what is included and how it has changed from prior versions. Also, remembering what was done and when can sometimes help to understand what was left out and why.
To help in these, software developers use version control systems: software that keeps track of changes. Version control systems also help in collaborative work, as they allow multiple people to work on the code at the same time. Version control systems make sure that these different contributions are merged correctly, ensuring that someone does not accidently overwrite changes that others have already made to the document. There is software that is used for version control, such as Git, Mercurial or Subversion. Choosing which tool to use depends mostly on organisational settings, but some of the tools are better integrated to wider ecosystems that should also be considered. For example, GitHub provides an ecosystem for Git users to collaborate, share code and manage projects. However, whatever software is chosen, its use (at a beginner level) is somewhat similar across all the tools: