Git and version control explained clearly
Version control is not a developer tool in the narrow sense, but the memory of a project. Anyone taking over an application notices first of all whether it has one.
What you will learn
What Git records
Git stores not only the current state but every change since the beginning: who made it, when, which lines were affected — and, if those involved do a good job, why.
This “why” is the real value. Which line changed can also be compared afterwards. That an unusual calculation goes back to a requirement from the tax adviser is written down nowhere — except in the text of the original change.
A branch is a building site next to live operation
Rarely is only one thing changed in an application at a time. A branch is a separate strand in which a change can take shape without touching the live version. Once it is finished and reviewed, it is merged.
For you as the client, this means two things: several topics can be worked on in parallel, and an unfinished change does not block an urgent fix elsewhere.
An example from practice
The question that remains unanswerable without a history
When taking over a project, the same question regularly comes up: why does this one place calculate differently from all the others? With a history, you find the change, the date and often a sentence giving the reason. Without a history, there are two possibilities — it is a bug, or it is a requirement. Both look the same in the code.
That is why we always ask about the version history when taking stock of an existing system. It is often more valuable than documentation because it does not go out of date: it does not describe how things should be, but what actually happened.
What does not belong in the repository
The first point is the most important and the most common. An access key committed by accident is not fixed by the next version — it must be treated as a compromised secret and replaced.
Common misconceptions
Further sources
- Git — official documentation Reference manual and the book “Pro Git” in a German edition
About the author
Fabian Lücker is managing partner of PHP-Schmiede KG in Rheine and has worked in software development since 2007. He is responsible for development and design, and writes here about decisions that arise in real projects.