Before we can talk about why to use version control it's important to understand what version control is. In it's simplest form, version control is a system that tracks changes to files over time.
Version control is often used by software developers but is useful for anyone who works with files that are updated over time, especially if there are multiple collaborators.
Take an author, for example, who is working on a novel. They may wish to experiment with different versions of the novel. Version control will track those changes, allow the author to keep their work in a single text file, and show differences between versions.
Version control also helps with merging different versions of a file together. In our author example, they may make updates to the novel when it is near completion, but so does the editor. The author's and editor's versions can be merged. If both people changed the same portion of the, file version control can show you both changes so you can decide which to keep.
One of the fundamental pieces of version control is a revision history. If the editor doesn't approve some rewording the author has made to the novel, the author can easily reference or return to the previous version. This is especially useful if there are multiple or complex changes.
Another advantage of version control is that copies of the repository, which has all the files and their history, can be stored on multiple computers. This may be the computer of each collaborator, and central server, etc. In the case of our author, if something happens to their copy of the novel, the editor has a copy as well.
Version control also allows you to create markers that reference the state of the files at a specific point in time. These are often used to denote major changes, such as a new version. If the author were to create a second revision of their novel, they can create a marker for the first version so that it can easily be referenced in the future.
Version control forces every file change to be attributed to a user, which introduces accountability. Stakeholders in a project can easily see who made changes and what those changes encompassed.
Additionally, version control allows you to post a message with each set of changes. These messages should be descriptive and can also provide insight into the origin of the change. For example, our author may leave a message such as "Reworded paragraph at the editor's request via email on 04/18".
You can see the benefits of version control for a single file, but when working with a codebase, the benefits expand to multiple files and each developer on the project is a committer. If you haven't used version control before when working on a development project, I encourage you to try it and increase your collaboration, accountability and security.
It’s clear your team needs version control to realize its full potential. Learn more about how a streamlined DevOps workflow can help build efficiency in The Definitive Guide to Agency Optimization.