- 1 Section
- 10 Lessons
- unbegrenzt
- Versionsverwaltung mit Git10
Warum Versionsverwaltung?
Versionsverwaltung – auch Version Control System (VCS) – ist die wohl wichtigste Tool-Kategorie der Softwareentwicklung. Wer kein VCS nutzt, arbeitet nicht professionell – Punkt. Diese Lektion startet den 10-teiligen Git-Kurs mit der Frage: warum braucht man das überhaupt?
Du lernst hier die Probleme, die Versionsverwaltung löst, den Unterschied zwischen zentralen und verteilten Systemen, warum sich Git durchgesetzt hat und welche Hosting-Plattformen es gibt (GitHub, GitLab, Bitbucket). Diese Grundlagen sind Pflicht für jede Klausur und jeden ernsthaften Job.
1) Eine Welt ohne Versionsverwaltung
Stell dir vor, du schreibst Code ohne Git. Was passiert in der Praxis? Hier eine typische Horror-Story aus der Vor-Git-Zeit:
projekt_final.zip auf dem Netzlaufwerk und arbeitet an Feature A.projekt_final_v2.zip – damit sie auf die alte Version zurück kann.2) Die zentralen Probleme – und ihre Lösung
Schauen wir die Probleme systematisch an. Jedes wird durch ein VCS gelöst:
3) Was bietet ein VCS konkret?
v1.0.0, v2.1.3 machen Versionen wieder auffindbar.4) Zentral vs. Verteilt – die zwei Architekturen
VCS lassen sich in zwei Klassen einteilen. Die ältere Generation ist zentral (Server speichert alles), die moderne verteilt (jeder hat alles):
push wird mit dem Remote synchronisiert.5) VCS-Klassiker im Überblick
6) Warum hat sich Git durchgesetzt?
Git ist nicht das einzige verteilte VCS, aber das mit Abstand erfolgreichste. Gründe:
- Geschwindigkeit: Lokale Operationen (commit, branch, log) sind sofort da. Keine Server-Roundtrips.
- Branching ist billig. Bei SVN ist ein Branch eine teure Operation, in Git fast kostenlos. Das ermöglicht ganz andere Workflows (siehe L8).
- Offline-Arbeit. Im Flugzeug, im Zug, ohne WLAN – alles geht. Erst beim push synchronisieren.
- Robustheit: Datenstruktur basiert auf Hashes (SHA-1) – Manipulation wird erkannt.
- GitHub-Effekt. Die Plattform hat Git zur sozialen Norm gemacht. Open-Source ohne GitHub kaum vorstellbar.
- Tools-Ökosystem: GitHub Desktop, Sourcetree, GitKraken, Tower – grafische Clients. Alle IDEs integrieren Git nativ.
Der Preis: Git ist komplex. Konzepte wie Staging-Area, Rebase, Reflog sind nicht intuitiv. Die nächsten 9 Lektionen erklären sie schrittweise.
7) Hosting-Plattformen: GitHub, GitLab, Bitbucket
Git ist ein Werkzeug, du brauchst noch einen Server, wo du den Code hochlädst und teilst. Die wichtigsten Plattformen:
8) Was speichert ein VCS eigentlich?
Drei verschiedene Ansätze haben sich entwickelt:
- Datei-Versionen (alt): jede Datei einzeln, in mehreren Versionen. Viel Speicher, keine Beziehung zwischen Dateien. RCS, frühes SCCS.
- Snapshots ganzer Verzeichnisse: bei jedem Commit wird der komplette Stand „fotografiert". Mehr Speicher, dafür einfacher zu verstehen. Git-Ansatz.
- Deltas (Unterschiede): nur die Änderungen zwischen Versionen werden gespeichert. Speichersparsam, aber jedes Revert ist eine Rechenoperation. SVN-Ansatz.
Git wählt den Snapshot-Ansatz und ist trotzdem speichereffizient – durch Content-Adressierung: identische Inhalte werden nur einmal gespeichert (mit Hash als Adresse). Mehr dazu in L2 Git-Grundbegriffe.
9) VCS sind nicht nur für Code
Versionsverwaltung lohnt sich für alles, was sich textuell darstellen lässt:
- Quellcode – der Standard-Use-Case.
- Konfiguration als Code – Infrastructure-as-Code (Terraform, Ansible), Kubernetes-Manifests.
- Dokumentation – Markdown-Dateien, Wikis, sogar Bücher. Diese Lektion liegt in Git.
- Designs als Text – Mermaid-Diagramme, PlantUML, SVG.
- Verträge und Texte – einige Anwaltsbüros versionieren Verträge in Git.
Probleme mit Binärdateien: Bilder, Videos, große Mediendateien. Git versteht den Inhalt nicht und speichert jede Version vollständig. Für solche Fälle: Git LFS (Large File Storage) oder spezialisierte Tools wie Perforce.
10) Mini-Geschichte: warum Git entstand
Eine kurze Anekdote für die Klausur (und allgemeine Bildung): Linus Torvalds und das Linux-Kernel-Team nutzten lange das kommerzielle BitKeeper. Als BitKeeper 2005 die Gratis-Lizenz für Open-Source widerrief, war Linus stinksauer. Er nahm sich zwei Wochen Zeit und schrieb Git – einen verteilten VCS, der seine Anforderungen erfüllte. Heute betreibt die ganze Welt Software damit. Eine der einflussreichsten Software-Entwicklungen aller Zeiten.
Zusammenfassung
Versionsverwaltung (VCS) löst die Probleme „keine Historie, Konflikte, kein Backup, keine Zusammenarbeit". Zwei Architekturen: zentral (SVN: Server hat Historie) vs. verteilt (Git: jeder hat alles). Git dominiert mit ~95 % Marktanteil: schnell, offline-fähig, billiges Branching, robust. Hosting-Plattformen: GitHub, GitLab, Bitbucket. Git speichert Snapshots mit Content-Adressierung über SHA-Hashes. Nächste Lektion: Git-Grundbegriffe.
