What is version control?
It's March 2006. It's 2 a.m., and I'm a third-year computer science student, presenting my first-ever freelance project to an important client tomorrow morning.
I've been coding for the last 14 hours, so I don't really remember what I changed that's causing it.
All I know is that the data layer of the app worked yesterday (or was it the day before?). Now, instead of stock prices, I'm getting a bunch of errors on my screen.
I tried to undo the changes that led to this mess, but... it's 2006, so my IDE can only revert about 5 minutes' worth of my sloppy midnight coding.
My hand is numb from hitting Ctrl+Z so many times. If I accidentally press the wrong key now, I won't be able to redo my changes back, and I'll lose even more work.
...unless my Windows 98 PC crashes randomly and corrupts all my open files first.
I'm desperate. My only hope is the backup I made yesterday... or was it last week? Was it on a USB stick? Or maybe on a CD?
Besides, none of it has the recent code, so I can't figure out which changes started the issue.
Oh, that's the same floppy disk 💾 that I put the backup on yesterday! That's a miracle!
Hold on, I have to extract the archive from the floppy disk first.
I can't get my files from the backup! Could the magnet inside the speaker have corrupted the floppy disk?
I guess this is it. I'm royally screwed.
It's amusing to think about it now, but back then, I was devastated. Eventually, I found the root cause of the issue in my code and fixed it.
Unfortunately, that came too late. I missed the deadline and lost the client. But I learned my lesson the hard way.
A is software that records changes to files over time. You can restore an older version, roll back one file or the whole project, compare the current version to the older, see who introduced changes and when, and much more.
Today, you can see version control seamlessly integrated into many apps. For example, when you edit a document in Google Docs, you can see a history of changes and revert your document to an earlier version. It's the same with files on Dropbox and many other services. Versioning in these apps happens automatically, and you don't have to think about it.
But there are also standalone version control systems, like Git, Mercurial, or Subversion, where you have more explicit and granular control over the versioning process.
These systems are especially useful for complex projects, such as software, websites, or datasets. Large projects have many parts that depend on each other. Often, code only works with specific versions of libraries or other components, and updating one part can break the rest. This is where version control systems shine.
Take the course as it was meant to be taken: bite-sized progression, focused linear order, gradually unlock Gitopedia entries. Continue with real Git in VS Code/Cursor/Antigravity/Windsurf at any time.
but requires sign-in