- 1 Abschnitt
- 10 Lektionen
- Um den Kurs in deinem Profil zu hinterlegen klicke oben auf Starten
- Versionsverwaltung11
- 1.1Einführung in die Versionsverwaltung
- 1.2Überblick über gängige Versionsverwaltungssysteme
- 1.3Installation und Einrichtung
- 1.4Grundlegende Befehle und Konzepte in Git
- 1.5Fortgeschrittene Git-Funktionen
- 1.6Zusammenarbeit und Workflows
- 1.7Integration und Automatisierung
- 1.8Best Practices und Fallstricke
- 1.9Versionsverwaltung8 Fragen
- 1.10Aufgaben
- 1.11Lösungen
Einführung in die Versionsverwaltung
Was ist Versionsverwaltung?
Versionsverwaltung, auch als Version Control oder Source Control bekannt, ist ein System, das Änderungen an Dateien im Laufe der Zeit verfolgt und verwaltet. Dies ermöglicht es Entwicklern, frühere Versionen ihrer Dateien wiederherzustellen, Änderungen nachzuvollziehen und gleichzeitig mit anderen Entwicklern an denselben Projekten zu arbeiten.
Warum ist Versionsverwaltung wichtig?
Versionsverwaltung bietet zahlreiche Vorteile, die zur Qualität und Effizienz der Softwareentwicklung beitragen:
Nachverfolgbarkeit:
- Jede Änderung im Code wird protokolliert und kann jederzeit zurückverfolgt werden. Dies erleichtert das Verständnis der Entwicklungsgeschichte und die Fehlerbehebung.
Zusammenarbeit:
- Mehrere Entwickler können gleichzeitig an demselben Projekt arbeiten, ohne sich gegenseitig zu stören. Änderungen können zusammengeführt und Konflikte gelöst werden.
Sicherung:
- Der Code wird regelmäßig gesichert. Im Falle eines Fehlers oder Verlusts können frühere Versionen wiederhergestellt werden.
Experimentieren:
- Entwickler können neue Features in separaten Branches entwickeln, ohne den stabilen Code zu beeinträchtigen. Wenn das Experiment erfolgreich ist, kann es in den Hauptzweig (Main Branch) integriert werden.
Grundkonzepte der Versionsverwaltung
1. Repository (Repo):
- Ein Repository ist der Speicherort, an dem der gesamte Code und die Änderungsverläufe aufbewahrt werden. Es kann lokal auf einem Computer oder remote auf einem Server liegen.
2. Commit:
- Ein Commit ist eine Speicherung des aktuellen Stands des Projekts im Repository. Jeder Commit hat eine eindeutige ID und enthält eine Nachricht, die beschreibt, was geändert wurde.
3. Branch:
- Ein Branch ist ein getrennter Entwicklungszweig im Repository. Entwickler können in Branches arbeiten, um neue Features zu entwickeln oder Fehler zu beheben, ohne den Hauptzweig zu beeinträchtigen.
4. Merge:
- Das Zusammenführen von Änderungen aus verschiedenen Branches in einen gemeinsamen Branch. Dies ist ein häufiger Vorgang, um Änderungen in den Hauptzweig zu integrieren.
5. Tag:
- Ein Tag ist ein Markierungspunkt im Repository, der eine bestimmte Version des Codes kennzeichnet, z.B. eine Veröffentlichungsversion (Release).
6. Konflikt:
- Ein Konflikt tritt auf, wenn zwei oder mehr Änderungen in denselben Teil des Codes eingreifen und nicht automatisch zusammengeführt werden können. Diese Konflikte müssen manuell gelöst werden.
Unterschiede zwischen verteilten und zentralisierten Versionskontrollsystemen
1. Zentralisierte Versionskontrollsysteme (CVCS):
- Alle Versionen des Codes werden auf einem zentralen Server gespeichert. Entwickler arbeiten auf Kopien des Codes, die sie vom Server abrufen und dort wieder hochladen.
- Beispiel: Subversion (SVN)
- Vorteil: Einfache Verwaltung und weniger Datenübertragung.
- Nachteil: Abhängigkeit von einem zentralen Server; bei Serverausfall kein Zugriff auf die Versionsgeschichte.
2. Verteilte Versionskontrollsysteme (DVCS):
- Jede Kopie des Repositories enthält die vollständige Versionsgeschichte. Entwickler können offline arbeiten und Änderungen später synchronisieren.
- Beispiel: Git, Mercurial
- Vorteil: Flexibilität und Zuverlässigkeit; Entwickler können unabhängig arbeiten.
- Nachteil: Komplexere Verwaltung und potenziell mehr Datenübertragung.
Beispiel: Grundlegender Workflow mit Git
Repository erstellen:
git init
2. Änderungen verfolgen:
git add .
git commit -m "Initial commit"
3. Branch erstellen und wechseln:
git branch feature-branch
git checkout feature-branch
Änderungen zusammenführen:
git checkout main
git merge feature-branch
