Zum Hauptinhalt springen

🌿 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! 🌿✨