🌿 Was ist Git?
📖 Definition
Git ist ein verteiltes Versionskontrollsystem. Es verfolgt und verwaltet den Änderungsverlauf von Code und ermöglicht es mehreren Entwicklern, gleichzeitig zu arbeiten. GitHub, GitLab und Bitbucket sind Dienste, die Git-Repositories hosten und Zusammenarbeit und Code-Sharing erleichtern.
🎯 Verstehen mit Analogie
Spiel-Speicherpunkte
Denken Sie an Git wie an ein Spiel-Speichersystem:
- Commit: Spiel-Speicherung - speichert aktuellen Zustand
- Branch: Parallelwelt - verschiedene Entscheidungen ausprobieren, während Hauptgeschichte erhalten bleibt
- Merge: Parallelwelten kombinieren - gute Ergebnisse auf Hauptgeschichte anwenden
- Revert: Zu früherer Speicherung zurückkehren - wiederherstellen bei Fehlern
⚙️ Funktionsweise
Gits 3 Bereiche
Working Directory (Arbeitsverzeichnis)
↓ git add
Staging Area (Bereitstellungsbereich)
↓ git commit
Repository (Repository)
↓ git push
Remote Repository (Remote-Repository)
Git-Workflow
1. Dateien ändern (Working Directory)
2. Änderungen bereitstellen (Staging Area) → git add
3. Commit erstellen (Local Repository) → git commit
4. Zu Remote pushen (Remote Repository) → git push
💡 Echte Beispiele
Grundlegende Git-Befehle
# Git-Repository initialisieren
git init
# Oder Remote-Repository klonen
git clone https://github.com/username/repo.git
# Status prüfen
git status
# Änderungen bereitstellen
git add index.html # Bestimmte Datei
git add . # Alle Dateien
# Commit erstellen
git commit -m "feat: Benutzeranmeldung hinzufügen"
# Push (hochladen)
git push origin main
# Pull (herunterladen)
git pull origin main
Branch-Operationen
# Branches prüfen
git branch
# Neuen Branch erstellen
git branch feature-login
# Branch wechseln
git checkout feature-login
# Oder gleichzeitig erstellen und wechseln
git checkout -b feature-login
# Neueste Methode (Git 2.23+)
git switch feature-login
git switch -c feature-login
# Branch zusammenführen
git checkout main
git merge feature-login
# Branch löschen
git branch -d feature-login
Kollaborationsszenario
# === Entwickler A ===
# 1. Repository klonen
git clone https://github.com/team/project.git
# 2. Neuen Feature-Branch erstellen
git checkout -b feature-payment
# 3. Code schreiben und committen
git add .
git commit -m "Zahlungsfunktion implementieren"
# 4. Zu Remote pushen
git push origin feature-payment
# 5. Pull Request auf GitHub erstellen
# === Entwickler B ===
# 1. Neuesten Code synchronisieren
git checkout main
git pull origin main
🤔 Häufige Fragen
F1. Was ist der Unterschied zwischen Git und GitHub?
A:
Git (Werkzeug)
├─ Versionskontrollsystem (Software)
├─ Funktioniert auf lokalem Computer
├─ Wird über Kommandozeile (CLI) verwendet
└─ Kostenlos, Open Source
GitHub (Dienst)
├─ Git-Repository-Hosting-Dienst
├─ Webbasierte Plattform
├─ Kollaborationsfunktionen (PR, Issue, Wiki)
└─ Code-Sharing und Open Source
Analogie: Git = Textverarbeitung, GitHub = Google Docs
F2. Wie schreibt man Commit-Nachrichten?
A: Folgen Sie klaren und konsistenten Konventionen:
# ✅ Gute Commit-Nachrichten
git commit -m "feat: Benutzeranmeldungs-API hinzufügen"
git commit -m "fix: Registrierungsbutton-Klick-Fehler beheben"
git commit -m "refactor: Doppelten Code entfernen und Funktionen trennen"
# ❌ Schlechte Commit-Nachrichten
git commit -m "aktualisieren"
git commit -m "Bug behoben"
git commit -m "in Arbeit..."
# Conventional Commits-Regeln
feat: Neue Funktion
fix: Fehlerbehebung
docs: Dokumentationsänderungen
style: Code-Formatierung
refactor: Code-Refactoring
test: Tests hinzufügen
chore: Build, Konfigurationsänderungen
F3. Unterschied zwischen Merge und Rebase?
A:
# Merge
# - Behält Branch-Historie wie sie ist
# - Erstellt Merge-Commit
git checkout main
git merge feature-login
Ergebnis:
A---B---C---D main
\ /
E-----F feature-login
# Rebase
# - Verschiebt Branch zu anderer Basis
# - Erhält lineare Historie
git checkout feature-login
git rebase main
Ergebnis:
A---B---C---D main
\
E'---F' feature-login
# Wann verwenden?
Merge: Teamzusammenarbeit, Pull Request
Rebase: Persönliche Branch-Bereinigung, saubere Historie
F4. Wie löst man Konflikte?
A:
# Konflikt tritt auf
git merge feature-login
# CONFLICT (content): Merge conflict in index.html
# Konfliktdateien prüfen
git status
# Datei öffnen und manuell lösen
# <h1>Finaler Titel</h1>
# Als gelöst markieren
git add index.html
git commit -m "Merge branch 'feature-login' - Titel-Konflikt gelöst"
# Merge abbrechen falls nötig
git merge --abort
🎬 Zusammenfassung
Git ist ein essentielles Werkzeug für moderne Entwicklung:
- Versionskontrolle: Verfolgt gesamte Änderungshistorie
- Zusammenarbeit: Mehrere Entwickler arbeiten gleichzeitig
- Branch: Sichere Experimente und Feature-Entwicklung
- Wiederherstellung: Jederzeit zu vorherigem Zustand zurückkehren
Git zu beherrschen ermöglicht selbstbewusstes Code-Management und effiziente Teamzusammenarbeit! 🌿✨