165 lines
4.4 KiB
Markdown
165 lines
4.4 KiB
Markdown
# Git Cheat Sheet
|
|
|
|
## STAGING & SNAPSHOTS
|
|
Arbeiten mit Snapshots und dem Git-Staging-Bereich
|
|
|
|
```bash
|
|
git status
|
|
# Zeigt geänderte Dateien im Arbeitsverzeichnis an, die für den nächsten Commit gestaged sind
|
|
|
|
git add [Datei]
|
|
# Fügt eine Datei in ihrem aktuellen Zustand zum nächsten Commit hinzu (staged)
|
|
|
|
git reset [Datei]
|
|
# Entfernt eine Datei aus dem Staging-Bereich, behält jedoch die Änderungen im Arbeitsverzeichnis bei
|
|
|
|
git diff
|
|
# Zeigt den Unterschied zwischen den Änderungen im Arbeitsverzeichnis und den gestagten Änderungen an
|
|
|
|
git diff --staged
|
|
# Zeigt den Unterschied der gestagten Änderungen, die noch nicht committet wurden
|
|
|
|
git commit -m "[Beschreibung]"
|
|
# Commitet die gestagten Änderungen als neuen Commit-Snapshot
|
|
```
|
|
|
|
## SETUP
|
|
Benutzerinformationen konfigurieren, die in allen lokalen Repositories verwendet werden
|
|
|
|
```bash
|
|
git config --global user.name "[Vorname Nachname]"
|
|
# Setzt einen Namen, der bei der Versionsgeschichte für den Kredit der Änderungen verwendet wird
|
|
|
|
git config --global user.email "[gültige-E-Mail]"
|
|
# Setzt eine E-Mail-Adresse, die mit jedem Versionsmarker in der Historie verknüpft wird
|
|
|
|
git config --global color.ui auto
|
|
# Aktiviert automatische Kommandozeilen-Färbung in Git für eine einfachere Ansicht
|
|
```
|
|
|
|
## SETUP & INIT
|
|
Benutzerinformationen konfigurieren, Repositories initialisieren und klonen
|
|
|
|
```bash
|
|
git init
|
|
# Initialisiert ein bestehendes Verzeichnis als Git-Repository
|
|
|
|
git clone [URL]
|
|
# Klont ein gesamtes Repository von einem gehosteten Standort via URL
|
|
```
|
|
|
|
## BRANCH & MERGE
|
|
Arbeiten mit Branches, den Kontext wechseln und Änderungen integrieren
|
|
|
|
```bash
|
|
git branch
|
|
# Listet alle Branches auf, ein * wird neben dem aktiven Branch angezeigt
|
|
|
|
git branch [branch-name]
|
|
# Erstellt einen neuen Branch basierend auf dem aktuellen Commit
|
|
|
|
git checkout
|
|
# Wechselt zu einem anderen Branch und checkt ihn in dein Arbeitsverzeichnis ein
|
|
|
|
git merge [branch]
|
|
# Führt die Historie des angegebenen Branches in den aktuellen Branch zusammen
|
|
|
|
git log
|
|
# Zeigt alle Commits der Historie des aktuellen Branches an
|
|
```
|
|
|
|
## SHARE & UPDATE
|
|
Updates von anderen Repositories abrufen und lokale Repositories aktualisieren
|
|
|
|
```bash
|
|
git remote add [Alias] [URL]
|
|
# Fügt eine Git-URL als Alias hinzu
|
|
|
|
git fetch [Alias]
|
|
# Lädt alle Branches vom angegebenen Git-Remote herunter
|
|
|
|
git merge [Alias]/[Branch]
|
|
# Führt einen Remote-Branch in deinen aktuellen Branch zusammen, um ihn zu aktualisieren
|
|
|
|
git push [Alias] [Branch]
|
|
# Überträgt lokale Branch-Commits zum Remote-Repository-Branch
|
|
|
|
git pull
|
|
# Holt und führt alle Commits aus dem Remote-Tracking-Branch zusammen
|
|
```
|
|
|
|
## TRACKING PATH CHANGES
|
|
Dateien und Pfadänderungen versionieren
|
|
|
|
```bash
|
|
git rm [Datei]
|
|
# Löscht die Datei aus dem Projekt und staged die Entfernung für den Commit
|
|
|
|
git mv [alter-Pfad] [neuer-Pfad]
|
|
# Ändert den Pfad einer bestehenden Datei und staged die Verschiebung
|
|
|
|
git log --stat -M
|
|
# Zeigt alle Commit-Logs an und kennzeichnet alle verschobenen Dateien
|
|
```
|
|
|
|
## TEMPORARY COMMITS
|
|
Temporäres Speichern von Änderungen, um den Branch zu wechseln
|
|
|
|
```bash
|
|
git stash
|
|
# Speichert alle Änderungen, die geändert oder gestaged wurden
|
|
|
|
git stash list
|
|
# Listet die Änderungen im Stash-Stack auf
|
|
|
|
git stash pop
|
|
# Holt die Änderungen vom obersten Stack und schreibt sie in das Arbeitsverzeichnis
|
|
|
|
git stash drop
|
|
# Entfernt die Änderungen vom obersten Stack
|
|
```
|
|
|
|
## REWRITE HISTORY
|
|
Branch-Historien umschreiben, Commits aktualisieren und Historie löschen
|
|
|
|
```bash
|
|
git rebase [Branch]
|
|
# Wendet alle Commits des aktuellen Branches auf den angegebenen Branch an
|
|
|
|
git reset --hard [Commit]
|
|
# Löscht den Staging-Bereich und überschreibt das Arbeitsverzeichnis mit einem bestimmten Commit
|
|
```
|
|
|
|
## INSPECTION & COMPARISON
|
|
Logs, Diffs und Objektinformationen anzeigen
|
|
|
|
```bash
|
|
git log
|
|
# Zeigt die Commit-Historie für den aktuell aktiven Branch an
|
|
|
|
git log branchB..branchA
|
|
# Zeigt die Commits an, die auf BranchA sind, aber nicht auf BranchB
|
|
|
|
git log --follow [Datei]
|
|
# Zeigt alle Commits an, die die Datei verändert haben, auch über Umbenennungen hinweg
|
|
|
|
git diff branchB...branchA
|
|
# Zeigt die Unterschiede zwischen BranchA und BranchB an
|
|
|
|
git show [SHA]
|
|
# Zeigt ein beliebiges Git-Objekt im menschenlesbaren Format an
|
|
```
|
|
|
|
## IGNORING PATTERNS
|
|
Verhindern, dass Dateien versehentlich gestaged oder committed werden
|
|
|
|
```bash
|
|
git config --global core.excludesfile [Datei]
|
|
# Systemweite Ignoriermuster für alle lokalen Repositories
|
|
|
|
# Beispiel für ein .gitignore
|
|
logs/
|
|
*.notes
|
|
pattern*/
|
|
```
|