Skip to content

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.

  • AudienceClients, project managers
  • LevelIntroductory
  • Reading timeabout 6 minutes
  • Last updated16 October 2026

What you will learn

  • What version control records — and what it does not
  • What a branch means in practice
  • Why the history is so valuable in a handover
  • What does not belong in a project repository

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

  • Credentials, keys and passwords. Once committed, they remain in the history permanently — even after deletion.
  • Real personal data as test data.
  • Generated files that can be recreated at any time.
  • Large binary files without good reason; they stay in the repository forever.

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

No. It records changes, but does not replace a backup of the database and the files in live operation.

Precisely there: small projects rarely have documentation, and the history is then the only explanation.

You can record today's state at any time. What is missing is everything before it — and that is the part that answers the questions.

Further sources

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.