1. Das Problem ohne Versionskontrolle: Warum das bloße Kopieren von Dateien eine schlechte Idee ist
Beginnen wir mit einer Alltagssituation. Stellen Sie sich vor, Sie arbeiten an Ihrem Java-Projekt. Alles läuft gut, bis der Moment der „Experimente“ kommt. Sie beschließen, etwas zu ändern, haben aber Angst, die funktionierende Version zu beschädigen. Was tun? Natürlich: das Projekt kopieren!
Am Ende tauchen auf Ihrer Festplatte solche „Meisterwerke“ auf:
MyProject/
├── Main.java
├── Main_backup.java
├── Main_final.java
├── Main_final2.java
├── Main_really_final.java
├── Main_really_really_final.java
Kommt Ihnen das bekannt vor? Und nun stellen Sie sich vor, ein Freund stößt zum Projekt dazu. Auch er kopiert Dateien – nur auf seine Art. Wie findet man heraus, welche Version die neueste und funktionierende ist? Wie erfährt man, wer was geändert hat? Wie stellt man alles wieder her, wenn ein Experiment misslingt?
Ohne Versionskontrolle:
- Geht funktionierender Code leicht verloren oder wird verwechselt.
- Ein „Rollback“ auf eine ältere Version ist unmöglich.
- Zu zweit oder zu dritt zu arbeiten ist schwierig.
- Chaos und Angst vor Experimenten.
Genau diese Probleme lösen Systeme zur Versionskontrolle – wie Git.
2. Warum braucht ein Entwickler Git?
Git – ein leistungsstarkes Versionsverwaltungssystem, das verwendet wird, um Änderungen am Quellcode während der Softwareentwicklung nachzuverfolgen. Es ermöglicht Entwicklern, verschiedene Versionen von Dateien zu speichern und die Arbeit mehrerer Personen an einem gemeinsamen Projekt zu koordinieren.
Grundbegriffe von Git:
Repository
Ein Repository (oder „Repo“) ist der Ort, an dem die gesamte Projektgeschichte gespeichert ist, einschließlich aller Änderungen und Versionen von Dateien.
Commits
commit ist ein gespeicherter Zustand des Projekts. Jeder Commit in Git enthält Informationen darüber, welche Änderungen am Projekt vorgenommen wurden, von wem und wann. Commits bilden die Historie des Projekts und erlauben es, zu jeder früheren Version zurückzukehren.
gitGraph
commit id: "1"
commit id: "2"
commit id: "3"
commit id: "4"
commit id: "5"
commit id: "6"
Jeder Commit ist ein „Schnappschuss“ des Projekts, der auf den vorherigen folgt und so eine fortlaufende Änderungshistorie bildet.
Branches
branch ist eine unabhängige Entwicklungslinie. Standardmäßig erstellt Git den Branch main. Sie können neue Branches für die Entwicklung neuer Features oder Fixes erstellen und sie anschließend wieder in den Haupt-Branch zusammenführen.
gitGraph
commit id: "1"
commit id: "2"
branch develop
commit id: "3"
commit id: "4"
commit id: "5"
checkout main
commit id: "6"
commit id: "7"
merge develop
commit id: "8"
commit id: "9"
Vom Haupt-Branch main zweigt der Branch develop für parallele Entwicklung ab. Nach Abschluss der Arbeit werden die Änderungen aus develop wieder in main zusammengeführt.
3. Wichtige Git-Befehle (das, was „unter der Haube“ passiert)
Nachfolgend finden Sie eine Liste grundlegender Befehle für die Arbeit mit Git im Terminal. Es ist wichtig zu verstehen, welche Befehle allen Operationen zugrunde liegen. Wir halten uns jedoch an den GUI-Ansatz und lernen, all diese Aktionen mithilfe der komfortablen grafischen Oberfläche von IntelliJ IDEA auszuführen. Betrachten Sie diese Befehle als das, was „unter der Haube“ passiert.
| Befehl | Beschreibung |
|---|---|
git init |
Initialisiert ein neues Git-Repository im aktuellen Verzeichnis. |
git clone |
Klonen eines Repositories von einer URL in ein neues Verzeichnis. |
git add |
Fügt Dateien dem Index für den nächsten Commit hinzu. |
git commit |
Schreibt die vorbereiteten Änderungen in das Repository. |
git push |
Sendet Änderungen vom lokalen Repository an das Remote-Repository. |
git pull |
Aktualisiert den aktuellen Branch mit der neuesten Version aus dem Remote-Repository. |
git branch |
Zeigt an, erstellt oder löscht Branches. |
git merge |
Führt die Änderungen des angegebenen Branches in den aktuellen Branch zusammen. |
Diese Befehle sind die grundlegenden Werkzeuge in Git und ermöglichen es, Änderungen am Code, Branches und Merges in Projekten jeder Größe zu verwalten.
sequenceDiagram
participant Arbeitsverzeichnis
participant Staging-Bereich (Staging)
participant Lokales Repository
participant Remote-Repository
Arbeitsverzeichnis ->> Staging-Bereich (Staging): git add (Vorbereiten)
Staging-Bereich (Staging) ->> Lokales Repository: git commit (Lokal speichern)
Lokales Repository ->> Remote-Repository: git push (Auf Server senden)
Remote-Repository ->> Arbeitsverzeichnis: git pull (Updates holen)
4. Drei Orte, an denen Ihr Code liegt
Wenn Sie ein Versionskontrollsystem für Ihren Code verwenden, wird er grob gesagt an drei Orten gespeichert:
1. Remote-Repository
Dies ist ein zentraler Ort zur Speicherung Ihres Codes, typischerweise auf Diensten wie GitHub, GitLab oder Bitbucket. Sie bieten zentrale Codeablage und sind die Grundlage für Zusammenarbeit. Das Remote-Repository dient als Integrationspunkt für automatisierte Prozesse wie Build, Test und Bereitstellung von Anwendungen.
2. Lokales Repository
Das lokale Repository ist Ihre persönliche Codekopie auf Ihrem Computer. In diesem Repository können Sie alle Git-Operationen (Commits, Branches, Merges) ohne Internetverbindung durchführen.
3. Arbeitsverzeichnis
Das Arbeitsverzeichnis auf Ihrem Computer enthält die aktuellen Projektdateien, an denen Sie gerade arbeiten. Hier sehen und ändern Sie Dateien, fügen neue Funktionen hinzu oder beheben Fehler.
Diese Komponenten bieten zusammen eine leistungsfähige Infrastruktur für das Management von Quellcode und ermöglichen es Entwicklern, die Projektgeschichte zu steuern und zusammenzuarbeiten.
5. GitHub – Ihr Portfolio
GitHub ist eine führende Webplattform für das Hosting von Quellcode, die das Versionskontrollsystem Git verwendet. Seit der Gründung im Jahr 2008 hat sie sich schnell zu einem der wichtigsten Werkzeuge für Entwickler weltweit entwickelt.
GitHub ermöglicht es Nutzern, Repositories zur Projektverwaltung zu erstellen, Änderungen im Code zu steuern und nachzuverfolgen und mit anderen Entwicklern zusammenzuarbeiten. Für moderne Entwickler ist ein Profil auf GitHub ein wichtiger Teil des Portfolios, das potenziellen Arbeitgebern gezeigt werden kann.
6. Erstellung Ihres ersten Repositories auf GitHub
Schritt 1. Gehen Sie zu https://github.com und registrieren Sie sich.
Schritt 2. Klicken Sie auf die Schaltfläche New repository, um ein neues Repository zu erstellen.
Schritt 3. Legen Sie die Parameter für das Repository fest:
- Repository-Name: Wählen Sie einen aussagekräftigen Namen.
- Öffentlich oder privat: Für Übungsprojekte ist „Public“ besser, damit es andere sehen können.
- Add a README file: Setzen Sie dieses Häkchen unbedingt. Das README ist das „Gesicht“ Ihres Projekts.
- Add .gitignore: Klicken Sie auf die Auswahlliste und wählen Sie eine Vorlage für Ihre Sprache.
- Choose a license: Kann übersprungen werden.
- Klicken Sie auf
Create repository.
Schritt 4. Glückwunsch, Ihr erstes Remote-Repository ist erstellt!
7. Installation und Einrichtung von Git
Obwohl man die Grundlagen von Git über Konsolenbefehle lernen kann (wie im Video gezeigt), verwenden in der täglichen Arbeit 99 % der Entwickler die bequemen, in die Entwicklungsumgebung integrierten Werkzeuge. Unser Ziel ist es, Sie so arbeiten zu lassen, wie es Profis tun.
Die Git-Oberfläche in allen modernen IDEs von JetBrains – sei es IntelliJ IDEA für Java/Kotlin, Rider für C# oder PyCharm für Python – ist nahezu identisch. Das bedeutet: Wenn Sie gelernt haben, in einer Umgebung mit Git zu arbeiten, können Sie diese Fähigkeiten leicht in jeder anderen anwenden. Daher verwenden wir IntelliJ IDEA als universelles Beispiel. Alles, was Sie hier sehen, wird in Ihrer bevorzugten IDE genauso aussehen und funktionieren.
Um mit Git auf Ihrem Computer zu arbeiten, muss Git zunächst installiert werden. Wenn Sie IntelliJ IDEA verwenden, wird sie Ihnen wahrscheinlich anbieten, Git automatisch zu installieren, falls es im System nicht gefunden wird. Wir empfehlen, dieses Angebot anzunehmen – das ist der einfachste Weg.
Schließen Sie das aktuelle Projekt über File > Close Project und klicken Sie auf Clone Repository.
Wenn Sie es hingegen manuell installieren möchten, nutzen Sie die offizielle Website: https://git-scm.com/downloads.
8. Ein wenig Historie: main vs. master
Früher hieß der Standard-Branch in Git master. Im Jahr 2020 sind die Entwickler-Community und die größten Plattformen, einschließlich GitHub, jedoch auf den neutraleren Begriff main umgestiegen.
Das ist wichtig zu wissen, da Sie in einigen älteren Artikeln oder Projekten noch auf den Branch master stoßen können. In unseren Vorlesungen und in modernen Projekten wird der Haupt-Branch stets main sein.
Mehr über den Wechsel zu main erfahren Sie unter folgenden Links:
GO TO FULL VERSION