Git Grundlagen – Versionskontrolle verstehen
Git Grundlagen – Versionskontrolle verstehen
Git ist das wichtigste Tool für Entwickler. Es speichert jede Änderung an deinem Code, sodass du jederzeit zurückgehen kannst. Dieses Guide erklärt die Grundlagen.
Was ist Git?
Stell dir vor, du schreibst einen Text und speicherst jeden Tag eine Kopie:
- bewerbung_v1.doc
- bewerbung_v2.doc
- bewerbung_final.doc
- bewerbung_final_wirklich.doc
- bewerbung_final_final.doc
Git macht das automatisch und intelligent.
Es speichert: - Jede Änderung (Commit) - Wer sie gemacht hat - Wann sie gemacht wurde - Warum sie gemacht wurde (Commit-Message)
Und du kannst jederzeit zu jedem früheren Zustand zurück.
Git installieren
Ubuntu/Debian
sudo apt install git -y
Konfigurieren
# Name und E-Mail setzen (wird bei Commits gespeichert)
git config --global user.name "Dein Name"
git config --global user.email "deine@email.com"
# Standard-Branch auf "main" setzen
git config --global init.defaultBranch main
# Config prüfen
git config --list
Dein erstes Repository
Neues Repository erstellen
# Ordner erstellen
mkdir mein-projekt
cd mein-projekt
# Git initialisieren
git init
Das war's! Jetzt ist der Ordner ein Git-Repository. Git hat einen versteckten .git Ordner erstellt, in dem alle Änderungen gespeichert werden.
Bestehendes Repository klonen
git clone https://github.com/username/repository.git
cd repository
Der Git-Workflow
Git hat drei "Bereiche":
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Working Dir │───▶│ Staging Area │───▶│ Repository │
│ (Deine Files) │ │ (git add) │ │ (git commit) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
- Working Directory: Deine Dateien, die du bearbeitest
- Staging Area: Änderungen, die du für den nächsten Commit vorgemerkt hast
- Repository: Alle gespeicherten Commits
Änderungen speichern (Commit)
Schritt 1: Status prüfen
git status
Zeigt dir: - Neue Dateien (untracked) - Geänderte Dateien (modified) - Zum Commit vorgemerkte Dateien (staged)
Schritt 2: Dateien zur Staging Area hinzufügen
# Eine Datei
git add datei.txt
# Mehrere Dateien
git add datei1.txt datei2.txt
# Alle geänderten Dateien
git add .
# Interaktiv auswählen
git add -p
Schritt 3: Commit erstellen
git commit -m "Beschreibung der Änderung"
Gute Commit-Messages: - ✅ "Fix: Login-Fehler bei falscher E-Mail behoben" - ✅ "Feature: Benutzer-Registrierung hinzugefügt" - ❌ "Update" - ❌ "Fix" - ❌ "asdfasdf"
Shortcut: add + commit
# Alle getrackten Dateien committen
git commit -am "Beschreibung"
Änderungen anschauen
Was wurde geändert?
# Ungestagete Änderungen
git diff
# Gestagete Änderungen
git diff --staged
# Bestimmte Datei
git diff datei.txt
Commit-Historie
# Alle Commits
git log
# Kompakte Ansicht
git log --oneline
# Mit Grafik (Branches)
git log --oneline --graph --all
# Letzte 5 Commits
git log -5
Mit Remote-Repository arbeiten (GitHub/GitLab)
Remote hinzufügen
git remote add origin https://github.com/username/repo.git
# Prüfen
git remote -v
Änderungen hochladen (Push)
# Erster Push (Branch verknüpfen)
git push -u origin main
# Danach reicht
git push
Änderungen herunterladen (Pull)
git pull
Repository klonen
git clone https://github.com/username/repo.git
Branches (Verzweigungen)
Branches erlauben es, parallel an Features zu arbeiten, ohne den Hauptcode zu beeinflussen.
Branch erstellen und wechseln
# Neuen Branch erstellen
git branch feature-login
# Zu Branch wechseln
git checkout feature-login
# Oder beides in einem
git checkout -b feature-login
Branches anzeigen
# Lokale Branches
git branch
# Alle Branches (inkl. Remote)
git branch -a
# Aktueller Branch
git branch --show-current
Branch mergen
# Zurück zum Hauptbranch
git checkout main
# Feature-Branch einmergen
git merge feature-login
# Branch löschen (nach dem Merge)
git branch -d feature-login
Änderungen rückgängig machen
Letzte Änderung an Datei verwerfen
git checkout -- datei.txt
# oder
git restore datei.txt
Datei aus Staging entfernen
git reset HEAD datei.txt
# oder
git restore --staged datei.txt
Letzten Commit ändern
# Message ändern
git commit --amend -m "Neue Message"
# Dateien zum letzten Commit hinzufügen
git add vergessene-datei.txt
git commit --amend --no-edit
Zum vorherigen Commit zurück
# Soft: Änderungen bleiben erhalten
git reset --soft HEAD~1
# Hard: Änderungen werden gelöscht!
git reset --hard HEAD~1
.gitignore – Dateien ignorieren
Manche Dateien sollen nicht ins Repository: - Passwörter und Secrets - Node Modules - Build-Ordner - IDE-Einstellungen
Erstelle eine .gitignore Datei:
# Ordner ignorieren
node_modules/
__pycache__/
.venv/
dist/
build/
# Dateien ignorieren
.env
*.log
*.pyc
.DS_Store
# Außer diese Datei
!wichtig.log
SSH-Key für GitHub/GitLab
Damit du nicht jedes Mal das Passwort eingeben musst:
# Key erstellen
ssh-keygen -t ed25519 -C "deine@email.com"
# Public Key anzeigen
cat ~/.ssh/id_ed25519.pub
Diesen Key dann in GitHub/GitLab unter Settings → SSH Keys einfügen.
# Verbindung testen
ssh -T git@github.com
Nützliche Befehle
| Befehl | Funktion |
|---|---|
git status |
Status anzeigen |
git add . |
Alle Änderungen stagen |
git commit -m "msg" |
Commit erstellen |
git push |
Hochladen |
git pull |
Herunterladen |
git log --oneline |
Historie (kompakt) |
git diff |
Änderungen anzeigen |
git branch |
Branches anzeigen |
git checkout -b name |
Neuer Branch |
git merge branch |
Branch mergen |
git stash |
Änderungen zwischenspeichern |
git stash pop |
Zwischenspeicher zurückholen |
Zusammenfassung
Der typische Workflow:
# 1. Änderungen machen
nano app.py
# 2. Status prüfen
git status
# 3. Änderungen stagen
git add .
# 4. Commit erstellen
git commit -m "Feature: Neue Funktion hinzugefügt"
# 5. Hochladen
git push
Nächste Schritte
- GitHub/GitLab Account erstellen
- Pull Requests verstehen
- Merge Konflikte lösen
- Git Flow Workflow lernen