Why Version Control Exists
Before Git specifically, it's worth understanding the actual problem version control solves — because Git's design only makes sense once you've felt that problem yourself.
The problem: "final_v2_ACTUALLY_final.docx." Without version control, tracking changes to a project over time means manually renaming files, emailing zip archives back and forth, or simply losing track of what changed and why. Multiple people editing the same files simultaneously makes this dramatically worse — whoever saves last silently overwrites everyone else's work.
Version control is a system that tracks every change to a set of files over time, recording who changed what, when, and — critically — why (via a commit message), while letting you go back to any previous state on demand. Nothing is ever truly lost once it's been committed.
Git specifically is distributed version control. Unlike older centralized systems (where one central server holds the only real history), every Git clone contains the entire project history — every commit, ever made, on every branch you have access to. This is why Git works offline, and why a single server going down doesn't destroy history that exists on every contributor's machine.
Git tracks content, not files as monolithic blobs. It's built to efficiently store the actual changes between versions, understanding at a deep level what changed line-by-line — this is what makes diffs, blame, and history genuinely useful rather than just "here's an old copy."
This course teaches Git the concept first, GitHub (the hosting service) second. They're related but distinct — Git is the version control system itself (works entirely offline, no account needed); GitHub is one of several companies that host Git repositories online and add collaboration features on top. Confusing the two is extremely common; this track deliberately keeps them separate until GitHub Basics (course 3).
Why this matters for you
Every Git command in this course exists to solve a real, specific problem from working without version control — keeping that "what problem does this solve" framing in mind makes the commands make sense, rather than feeling like arbitrary syntax to memorize.
▶️ Before the next lesson
If you haven't already, install Git (git-scm.com) and confirm it works by running git --version in a terminal — the actual command line, not yet through any IDE.