Git ist das weltweit meistgenutzte Versionskontrollsystem. Es verfolgt Änderungen an Dateien und ermöglicht Zusammenarbeit im Team.

Was ist Git?

Git speichert Snapshots Ihrer Dateien über die Zeit. Damit können Sie:

  • Änderungen nachverfolgen
  • Zu älteren Versionen zurückkehren
  • Mit anderen zusammenarbeiten
  • Verschiedene Versionen parallel entwickeln (Branches)

Git installieren

Linux

apt install git      # Debian/Ubuntu
dnf install git      # CentOS/AlmaLinux

Konfiguration

git config --global user.name "Ihr Name"
git config --global user.email "ihre@email.de"

Konfiguration prüfen

git config --list

Repository erstellen

Neues Projekt

mkdir mein-projekt
cd mein-projekt
git init

Bestehendes Projekt klonen

git clone https://github.com/user/repo.git
git clone git@github.com:user/repo.git

Die drei Bereiche

Git unterscheidet drei Bereiche:

1. Working Directory: Ihre Dateien 2. Staging Area (Index): Vorgemerkte Änderungen 3. Repository: Gespeicherte Snapshots (Commits)

Working Directory → Staging Area → Repository
       │                │              │
       └─ git add ─────→│              │
                        └─ git commit ─→│

Grundlegende Befehle

Status prüfen

git status

Zeigt:

  • Geänderte Dateien
  • Neue (untracked) Dateien
  • Vorgemerkte Änderungen

Änderungen anzeigen

# Nicht vorgemerkte Änderungen
git diff

# Vorgemerkte Änderungen
git diff --staged

Dateien vormerken (staging)

# Einzelne Datei
git add datei.txt

# Mehrere Dateien
git add datei1.txt datei2.txt

# Alle Änderungen
git add .

# Interaktiv
git add -p

Commit erstellen

git commit -m "Kurze Beschreibung der Änderung"

Mit Editor für längere Nachricht:

git commit

Add und Commit kombinieren

git commit -am "Nachricht"

(Nur für bereits getrackte Dateien)

Historie anzeigen

Log

# Vollständig
git log

# Kompakt
git log --oneline

# Mit Graph
git log --oneline --graph

# Letzte 5 Commits
git log -5

# Mit Änderungen
git log -p

Bestimmten Commit anzeigen

git show abc1234

Änderungen rückgängig machen

Datei aus Staging entfernen

git reset HEAD datei.txt
# oder (moderner)
git restore --staged datei.txt

Änderungen verwerfen

git checkout -- datei.txt
# oder (moderner)
git restore datei.txt

Letzten Commit ändern

git commit --amend -m "Neue Nachricht"

Commit rückgängig (neuer Commit)

git revert abc1234

Branches

Branches ermöglichen parallele Entwicklung.

Branches anzeigen

git branch
git branch -a    # Auch remote

Branch erstellen

git branch feature-name

Branch wechseln

git checkout feature-name
# oder (moderner)
git switch feature-name

Erstellen und wechseln

git checkout -b feature-name
# oder
git switch -c feature-name

Branch löschen

git branch -d feature-name     # Wenn gemerged
git branch -D feature-name     # Erzwingen

Mergen

Branches zusammenführen:

# Zu main wechseln
git checkout main

# Feature-Branch mergen
git merge feature-name

Merge-Konflikte

Bei Konflikten:

1. Betroffene Dateien bearbeiten 2. Konflikte lösen (<<<, ===, >>> entfernen) 3. Dateien vormerken: git add datei.txt 4. Commit abschließen: git commit

Remote Repositories

Remote hinzufügen

git remote add origin https://github.com/user/repo.git

Remotes anzeigen

git remote -v

Änderungen hochladen (push)

git push origin main
git push -u origin main    # Upstream setzen

Nach -u:

git push    # Reicht aus

Änderungen herunterladen

git fetch           # Nur herunterladen
git pull            # Herunterladen und mergen
git pull --rebase   # Mit Rebase

.gitignore

Dateien vom Tracking ausschließen:

# .gitignore
*.log
node_modules/
.env
*.pyc
__pycache__/
.DS_Store
*.swp

Global ignorieren

git config --global core.excludesfile ~/.gitignore_global

Nützliche Befehle

Dateien umbenennen/verschieben

git mv alte-datei.txt neue-datei.txt

Dateien löschen

git rm datei.txt
git rm -r verzeichnis/

Temporär speichern (Stash)

# Änderungen speichern
git stash

# Liste anzeigen
git stash list

# Wiederherstellen
git stash pop

# Bestimmten Stash anwenden
git stash apply stash@{1}

Tags

# Tag erstellen
git tag v1.0.0

# Mit Nachricht
git tag -a v1.0.0 -m "Version 1.0.0"

# Tags anzeigen
git tag

# Tag pushen
git push origin v1.0.0
git push origin --tags

Workflow-Beispiel

# 1. Neuer Feature-Branch
git checkout -b feature/neues-feature

# 2. Änderungen machen
# ... Dateien bearbeiten ...

# 3. Status prüfen
git status
git diff

# 4. Änderungen committen
git add .
git commit -m "Feature: Beschreibung"

# 5. Zu main wechseln und aktualisieren
git checkout main
git pull

# 6. Feature mergen
git merge feature/neues-feature

# 7. Pushen
git push

# 8. Branch löschen
git branch -d feature/neues-feature

Häufige Befehle

| Aktion | Befehl | |--------|--------| | Status | git status | | Änderungen | git diff | | Vormerken | git add . | | Commit | git commit -m "Nachricht" | | Historie | git log --oneline | | Branch erstellen | git checkout -b name | | Branch wechseln | git checkout name | | Mergen | git merge branch | | Pull | git pull | | Push | git push |

Best Practices

1. Kleine, häufige Commits: Eine logische Änderung pro Commit 2. Aussagekräftige Nachrichten: Was und warum, nicht wie 3. Feature-Branches: Neue Features in eigenen Branches 4. Regelmäßig pushen: Arbeit sichern 5. .gitignore: Keine generierten Dateien, keine Secrets

Fazit

Git ist unverzichtbar für moderne Softwareentwicklung. Die Grundbefehle sind schnell gelernt. Nutzen Sie Branches für neue Features und committen Sie regelmäßig mit aussagekräftigen Nachrichten.