Modul 9 von 16 · 📖 9 min Lesezeit · ⏱ 30 min gesamt

FI-AE 09 Versionsverwaltung mit Git

Inhaltsverzeichnis (6 Abschnitte)
  1. Konzepte und Hintergrund
  2. Architektur-Diagramm
  3. Praktische Schritte
  4. Häufige Fallstricke
  5. Weiterführende Ressourcen
  6. Wissens-Check

FI-AE 09 Versionsverwaltung mit Git

In diesem Modul erlernen Sie fortgeschrittene Git-Techniken für professionelles Softwareentwicklung. Sie verstehen Branching-Modelle wie Git Flow und Trunk-Based Development, beherrschen den Umgang mit Pull Requests, können Merge-Konflikte effizient lösen und wissen, wann Rebase gegenüber Merge bevorzugt werden sollte.

Konzepte und Hintergrund

Branching-Modelle
Strategien zur Organisation von Entwicklungszweigen in Git, die Teamarbeit und Code-Qualität sicherstellen. Git Flow etabliert Haupt-, Feature-, Release- und Hotfix-Zweige, während Trunk-Based Development auf kurzen Lebenszyklen und häufigen Merges in den Hauptzweig setzt.
Pull Requests
Mechanismus zur Code-Review und Integration, bei dem Änderungen in einem Branch vorgeschlagen und diskutiert werden, bevor sie in den Zielzweig zusammengeführt werden.
Merge-Konflikte
Situationen, in denen Git automatisch entscheiden kann, wie Änderungen zusammenzuführen, weil identische Zeilen in beiden Branches unterschiedlich geändert wurden.
Rebase vs. Merge
Zwei Strategien zur Integration von Branches: Merge behält den vollständigen Verlauf bei, während Rebase die Commits eines Branches auf den neuesten Stand des Zielbranches neu schreibt und einen linearen Verlauf erzeugt.

Architektur-Diagramm

flowchart LR
  A[main/master] --> B[develop]
  B --> C[feature/xyz]
  B --> D[release/1.0]
  D --> E[hotfix/critical]
  C -->|Pull Request| B
  D -->|Pull Request| A
  E -->|Merge| A
  E -->|Merge| B

Praktische Schritte

  1. Erstellen Sie einen neuen Feature-Branch vom develop-Zweig:
    git checkout develop
    git checkout -b feature/neue-funktion
  2. Implementieren Sie Ihre Änderungen und committen Sie regelmäßig mit aussagekräftigen Nachrichten:
    git commit -m "Login-Formular validiert"
  3. Puschen Sie Ihren Branch zum Remote-Repository:
    git push origin feature/neue-funktion
  4. Erstellen Sie einen Pull Request über die Git-Web-Oberfläche oder mit der CLI:
    gh pr create --title "Neues Login-Formular" --body "Implementiert OAuth2-Integration"
  5. Lösen Sie auftretende Merge-Konflikte lokal:
    git pull origin develop
    Bearbeiten Sie die Konfliktdateien und führen Sie aus:
    git add .
    git commit -m "Konflikt gelöst"
  6. Führen Sie nach Review den Merge durch:
    git checkout develop
    git merge --no-ff feature/neue-funktion
  7. Löschen Sie den Feature-Branch nach erfolgreichem Merge:
    git branch -d feature/neue-funktion
    git push origin --delete feature/neue-funktion
  8. Erstellen Sie für Releases einen Release-Zweig vom develop:
    git checkout -b release/1.2.0 develop

Häufige Fallstricke

Weiterführende Ressourcen

Wissens-Check

Vier Fragen zur Selbstkontrolle. Klicken Sie jede Frage an, um die richtige Antwort und Erklärung zu sehen.

1. Welches Branching-Modell bevorzugt kurze Lebenszyklen für Feature-Branches und häufige Merges in den Hauptzweig?

Richtige Antwort: B. Trunk-Based Development setzt auf kurze Lebenszyklen und häufige Merges, während Git Flow längere Lebenszyklen mit spezialisierten Branch-Typen vorsieht.

2. Was ist der Hauptvorteil von Rebase gegenüber Merge bei der Integration von Branches?
  • A) Rebase behält den vollständigen Verlauf aller Commits bei
  • B) Rebase erzeugt einen linearen Verlauf ohne Merge-Commits
  • C) Rebase löst automatisch alle Merge-Konflikte
  • D) Rebase funktioniert nur mit lokalen Repositories

Richtige Antwort: B. Rebase schreibt Commits neu und erzeugt einen linearen Verlauf, während Merge Commits beider Branches beibehält und Merge-Commits erzeugt.

3. In welchem Branching-Modell wird ein Hotfix-Zweig typischerweise vom Hauptzweig (main/master) abgeleitet?
  • A) Trunk-Based Development
  • B) Git Flow
  • C) Forking Workflow
  • D) Branch-per-Feature

Richtige Antwort: B. Git Flow spezifiziert, dass Hotfixes direkt vom Hauptzweig abgeleitet werden, während andere Modelle dies nicht vorschreiben.

4. Was ist der primäre Zweck von Pull Requests in Git?
  • A) Automatisches Testen von Codeänderungen
  • B) Mechanismus zur Code-Review und Integration
  • C) Lösung von Merge-Konflikten
  • D) Erstellung von neuen Branches

Richtige Antwort: B. Pull Requests dienen primär der Code-Review und der kontrollierten Integration von Änderungen, während andere Funktionen separate Werkzeuge oder Git-Befehle erfordern.