Objective. Students explain the purpose of version control, describe the difference between centralized and distributed systems, and identify the role of Git in modern software development.
This lesson, its worked examples and its practice questions has not yet been verified by an industry-certified professional or by a certification or approval body. It is a study draft and may contain errors. Do not use it as instructions for work on a job site or on live equipment. Always follow your instructor, your supervising professional, and current official references and regulations.
VoTechWorks program approval and accreditation are still in progress. Credentials are issued only by the certifying bodies named in each program, after their own exams.
Every software project produces files that change over time. A single developer might edit the same HTML file dozens of times in a week. A team of five developers might edit it dozens of times per day. Without a system to track those changes, serious problems pile up fast: you overwrite a colleague's work, you lose a feature that was deleted two weeks ago, or you cannot tell which version of a file is the one currently running on the production server.
Version control is a system that records changes to files over time so you can recall specific versions later. Think of it as a detailed logbook for your codebase. Every meaningful change is saved with a timestamp, the author's name, and a short description of what changed and why. If something breaks, you can scroll back through that logbook, find the last working state, and restore it.
Two broad architectures exist, and understanding the difference matters for both your day-to-day work and your credential exams.
Centralized Version Control Systems (CVCS) store the full project history on a single central server. Developers check out individual files from that server, make changes, and check them back in. Subversion (SVN) and CVS are well-known examples. The weakness is obvious: if the central server goes offline or its disk fails, no one can commit work or retrieve history until the server is restored. The entire project history lives in one place.
Distributed Version Control Systems (DVCS) take a different approach. When you clone a repository, you do not just download the latest snapshot of the files — you download the entire history of the project. Every developer's machine holds a full, independent copy of the repository. Git is the most widely used DVCS today. Because every clone is a complete backup, there is no single point of failure. Two developers can work and commit entirely offline, then synchronize their work when they reconnect.
The practical difference: with a CVCS you need network access to commit; with Git you commit locally and push to a shared server when you are ready.
Many older systems store data as a list of file-based changes — sometimes called delta-based storage. They keep the original file and a chain of differences applied on top of it.
Git does something fundamentally different. Each time you commit, Git takes a snapshot of every tracked file at that moment and stores a reference to that snapshot. If a file has not changed since the last commit, Git stores a link to the previous identical file rather than copying it again. This snapshot model makes operations like branching, merging, and checking out old versions extremely fast, because Git is mostly reading local data rather than recalculating a chain of deltas.
Understanding these three states is essential — they appear directly in the CompTIA Linux+ exam objectives and in everyday Git work.
1. Modified — You have changed the file in your working directory, but Git has not recorded the change yet. The file differs from what Git last committed.
2. Staged — You have marked a modified file to go into your next commit. The staging area (also called the index) is a preparation zone where you assemble exactly which changes will be recorded in the next snapshot.
3. Committed — The data is safely stored in your local repository database. The change is now part of the project's permanent history.
This leads to three corresponding areas of a Git project: the working tree (your local files on disk), the staging area (your next-commit queue), and the Git repository (the `.git` directory where history lives).
The typical workflow moves in one direction: you edit files in the working tree, you stage the ones you want, and then you commit them to the repository.
A commit is a permanent snapshot in the repository. Every commit has a unique identifier (a SHA-1 hash), an author, a timestamp, a message, and a pointer to the previous commit. Commits chain together to form the project history.
HEAD is simply a pointer that tells Git which commit you are currently looking at — usually the latest commit on the branch you are working on. When you make a new commit, HEAD moves forward to point at it.
Git was created by Linus Torvalds in 2005 to manage the Linux kernel source code. It was designed from the start to be fast, support non-linear development (many branches at once), and handle large projects. Today Git is the de facto standard in the industry. Platforms such as GitHub, GitLab, and Bitbucket are built on top of Git and are central to professional workflows including code review, continuous integration, and open-source collaboration.
In software development, "safety" often means protecting data and systems rather than physical hazards. Two habits that every developer must build from the start:
When working on systems that interact with live servers or databases, treat Git operations on production branches with the same caution you would give any critical system change: confirm what you are doing before you execute it.
Answer each question, then check it. Nothing is recorded; this is your own practice.
A free tech program — complimentary, as our commitment to get America working. Help us build VoTechWorks. Tell us what works, what doesn’t, and what you want to learn.