Version Control for Beginners: The Pendrive Analogy
Source: Dev.to

Life Before Version Control
Imagine this: you are a developer in the 1990s, building software. There is a bug that you cannot fix, and you want your colleague John to help you. You already have the source code. How do you transfer the code to him?
The Pendrive Problem
Maybe by using a pendrive, hard disk, email, or CDs, you copy the code and give it to John. John copies the code into his system and starts working on it. After fixing the bug, John deletes your old code, copies the updated version to the pendrive, and gives it back to you. You copy the code from the pendrive and see that the original bug is fixed, but there is another bug in an unexpected part of the code.

Why final_final_v2 Was Never Final
At this point you are confused. Is the new bug your fault or John’s? There is no way to confirm that.

Both developers decide that every time a change is made, they will not delete the old code from the pendrive. Instead, they will add the new code with the name final.

As the codebase grows, many confusing names appear: final_v2, latest_final, latest_final_final, latest_final_super_final, etc.
Why Teams Needed a Better System
Now you are confused again. Which is the latest code? Who changed which part? Why are there unexpected bugs?
These problems are already painful for two developers; imagine adding a third developer, Will. The chaos multiplies.
You are frustrated because you cannot track changes in your code. So you decide to build software that records every addition or rewrite, along with the author of each change. This solves the multiple‑file‑and‑folder problem: no matter how many developers are involved, everyone can work in the same folder.
That software is Git, created by Linus Torvalds.
What Is Version Control?
Version control is a system that tracks changes made to files over time, showing what changed, who changed it, and when it changed.
Using version control you can:
- Track every change in code
- Eliminate confusing
final_final_v2folders - Prevent accidental overwrites
- Provide a full change history
- Enable collaboration
- Show exactly what changed
- Identify the author of each change
The Pendrive Limitation
Even with version control, you might still be using a pendrive. The pendrive always contains the latest code, and only one developer can work at a time. Others have stale copies and cannot make changes.
Centralised Repository
To solve this, set up a central server that hosts a Git repository. The server always contains the latest version of the code. All developers pull the code from the server, make their changes, and push them back.

In this way, all developers can work simultaneously and compare their code against a single source of truth—the code on the server. This server is commonly provided by GitHub.