Teil 2 – Die Grundlagen: Commits, Branches und Merges

Warum die Grundlagen so wichtig sind

Git hat viele mächtige Features. Aber am Kern stehen drei Konzepte, die jeder verstehen muss:

  1. Commits → kleine Speicherpunkte in der Historie.
  2. Branches → parallele Entwicklungszweige.
  3. Merges → das Zusammenführen verschiedener Zweige.

Wer diese Bausteine versteht, hat schon 80 % des Git-Wissens in der Tasche.


Commits – Schnappschüsse deiner Arbeit

Was ist ein Commit?

Ein Commit ist eine Art „Foto“ deines Projekts zu einem bestimmten Zeitpunkt.

  • Enthält alle Änderungen, die du seit dem letzten Commit gemacht hast.
  • Hat eine eindeutige ID (SHA-1-Hash, z. B. a1b2c3d4...).
  • Speichert Metadaten: Autor, E-Mail, Datum, Commit-Message.

👉 Commits sind unveränderbar. Das gibt Sicherheit: Die Historie kann nicht einfach umgeschrieben werden.


Der Weg zum Commit

Ein Commit entsteht in drei Schritten:

  1. Ändern – Du bearbeitest Dateien im Arbeitsverzeichnis.
  2. Stagen – Du sagst Git, welche Änderungen du aufnehmen willst. git add index.html Oder alle Änderungen: git add .
  3. Committen – Du erstellst den Schnappschuss. git commit -m "Neue Startseite erstellt"

Commit-Messages

Eine gute Commit-Nachricht ist Gold wert. Sie sollte:

  • kurz und prägnant sein.
  • im Präsens formuliert werden („Füge Login hinzu“, nicht „Login hinzugefügt“).
  • erklären, was geändert wurde, nicht unbedingt wie.

👉 Beispiel:

git commit -m "Implementiere Login-Formular mit Validierung"

Historie anzeigen

Mit git log kannst du die Commits sehen:

commit 1a2b3c4d
Author: Max Mustermann <max@example.com>
Date:   Mon Sep 14 12:34:56 2025 +0200

    Implementiere Login-Formular mit Validierung

Nützlich:

  • git log --oneline → kompaktes Log.
  • git log --graph → zeigt Branches und Merges visuell.

Branches – parallele Entwicklungszweige

Was ist ein Branch?

Ein Branch ist ein Zeiger auf eine Reihe von Commits.

  • Der Standard-Branch heißt meistens main.
  • Neue Branches erlauben Experimente und Features, ohne den Hauptcode zu gefährden.

👉 Man kann Branches wie parallele Zeitlinien sehen.


Branch erstellen

git branch feature-login

Damit ist ein neuer Branch angelegt – er zeigt momentan auf denselben Commit wie main.


In den Branch wechseln

git checkout feature-login

oder moderner:

git switch feature-login

Ab jetzt machst du alle Änderungen im neuen Branch.


Branches anzeigen

git branch

zeigt alle Branches, ein * markiert den aktuellen.


Typischer Workflow mit Branches

  • Feature-Branches → für neue Funktionen.
  • Bugfix-Branches → für schnelle Korrekturen.
  • Release-Branches → um stabile Versionen vorzubereiten.

👉 Vorteil: Der main-Branch bleibt stabil und produktionsbereit.


Merges – das Zusammenführen

Was ist ein Merge?

Ein Merge kombiniert die Arbeit aus zwei Branches.

  • Typischer Fall: Ein Feature-Branch wird in main integriert.

Merge durchführen

  1. Zurück in den Hauptbranch wechseln: git checkout main
  2. Merge starten: git merge feature-login

Automatischer Merge

Wenn es keine widersprüchlichen Änderungen gibt, läuft der Merge automatisch:

Updating a1b2c3d..d4e5f6g
Fast-forward
 index.html | 5 +++++
 1 file changed, 5 insertions(+)

👉 „Fast-forward“ bedeutet: Der Branch wurde einfach nach vorne bewegt.


Merge-Konflikte

Passiert, wenn dieselbe Datei in beiden Branches unterschiedlich geändert wurde.

Beispiel:

  • In main steht in index.html: <h1>Hallo Welt</h1>
  • In feature-login steht: <h1>Login-Seite</h1>

Nach dem Merge zeigt Git den Konflikt:

<<<<<<< HEAD
<h1>Hallo Welt</h1>
=======
<h1>Login-Seite</h1>
>>>>>>> feature-login

👉 Entwickler muss entscheiden, welche Version bleibt.


Konflikte lösen

  • Datei manuell bearbeiten.
  • Konfliktmarker (<<<<<<<, =======, >>>>>>>) entfernen.
  • Änderungen als gelöst markieren: git add index.html git commit

Visualisierung der Grundlagen

Man kann sich die Arbeit mit Git wie einen Baum mit Ästen vorstellen:

  • Commits = Knoten im Baum.
  • Branches = Äste, die auf bestimmte Knoten zeigen.
  • Merge = das Zusammenwachsen zweier Äste.

So bleibt der Code übersichtlich und strukturiert, auch wenn viele Leute parallel daran arbeiten.


Praktisches Beispiel

1. Neues Repository

git init meinprojekt
cd meinprojekt
git config user.name "Max"
git config user.email "max@example.com"

2. Erste Datei

echo "Hallo Welt" > index.html
git add index.html
git commit -m "Erstelle Startseite"

3. Branch erstellen

git branch feature-login
git switch feature-login

4. Neue Datei im Branch

echo "<form>Login</form>" > login.html
git add login.html
git commit -m "Füge Login-Seite hinzu"

5. Zurück zu main und mergen

git switch main
git merge feature-login

👉 Ergebnis: Beide Dateien (index.html + login.html) sind jetzt im main-Branch.


Best Practices

  • Kleine Commits → Jede Änderung sollte ein klarer, abgeschlossener Schritt sein.
  • Sinnvolle Branch-Namen → z. B. feature/login-form statt test1.
  • Commit-Messages → beschreiben, was passiert ist.
  • Regelmäßig mergen → verhindert große Konflikte.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert