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/AlmaLinuxKonfiguration
git config --global user.name "Ihr Name"
git config --global user.email "ihre@email.de"Konfiguration prüfen
git config --listRepository erstellen
Neues Projekt
mkdir mein-projekt
cd mein-projekt
git initBestehendes Projekt klonen
git clone https://github.com/user/repo.git
git clone git@github.com:user/repo.gitDie 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 statusZeigt:
- Geänderte Dateien
- Neue (untracked) Dateien
- Vorgemerkte Änderungen
Änderungen anzeigen
# Nicht vorgemerkte Änderungen
git diff
# Vorgemerkte Änderungen
git diff --stagedDateien vormerken (staging)
# Einzelne Datei
git add datei.txt
# Mehrere Dateien
git add datei1.txt datei2.txt
# Alle Änderungen
git add .
# Interaktiv
git add -pCommit erstellen
git commit -m "Kurze Beschreibung der Änderung"Mit Editor für längere Nachricht:
git commitAdd 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 -pBestimmten 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.txtLetzten Commit ändern
git commit --amend -m "Neue Nachricht"Commit rückgängig (neuer Commit)
git revert abc1234Branches
Branches ermöglichen parallele Entwicklung.
Branches anzeigen
git branch
git branch -a # Auch remoteBranch erstellen
git branch feature-nameBranch wechseln
git checkout feature-name
# oder (moderner)
git switch feature-nameErstellen und wechseln
git checkout -b feature-name
# oder
git switch -c feature-nameBranch löschen
git branch -d feature-name # Wenn gemerged
git branch -D feature-name # ErzwingenMergen
Branches zusammenführen:
# Zu main wechseln
git checkout main
# Feature-Branch mergen
git merge feature-nameMerge-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.gitRemotes anzeigen
git remote -vÄnderungen hochladen (push)
git push origin main
git push -u origin main # Upstream setzenNach -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
*.swpGlobal ignorieren
git config --global core.excludesfile ~/.gitignore_globalNützliche Befehle
Dateien umbenennen/verschieben
git mv alte-datei.txt neue-datei.txtDateien 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 --tagsWorkflow-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-featureHä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.