Update Extras/Cheat_Sheet.md
parent
2d9aa5eb4b
commit
7e4857b271
|
|
@ -1,164 +1,171 @@
|
||||||
# Git Cheat Sheet
|
# Git Cheatsheet
|
||||||
|
|
||||||
## STAGING & SNAPSHOTS
|
|
||||||
Arbeiten mit Snapshots und dem Git-Staging-Bereich
|
|
||||||
|
|
||||||
|
## Login / Authentifizieren
|
||||||
```bash
|
```bash
|
||||||
git status
|
# Git-User-Info lokal setzen (für Commits)
|
||||||
# Zeigt geänderte Dateien im Arbeitsverzeichnis an, die für den nächsten Commit gestaged sind
|
git config --global user.name "Dein Name"
|
||||||
|
git config --global user.email "deine@email.de"
|
||||||
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
|
## Create & Clone
|
||||||
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
|
```bash
|
||||||
|
# Aktuellen Ordner in eine Repository verwandeln
|
||||||
git init
|
git init
|
||||||
# Initialisiert ein bestehendes Verzeichnis als Git-Repository
|
|
||||||
|
|
||||||
git clone [URL]
|
# Repository von einem Link klonen
|
||||||
# Klont ein gesamtes Repository von einem gehosteten Standort via URL
|
git clone <link>
|
||||||
|
|
||||||
|
# Repository von einem Link zu einem bestimmten Pfad klonen
|
||||||
|
git clone <link> <ziel_pfad>
|
||||||
```
|
```
|
||||||
|
|
||||||
## BRANCH & MERGE
|
## Add & Remove
|
||||||
Arbeiten mit Branches, den Kontext wechseln und Änderungen integrieren
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# Einzelne Datei tracken & stagen
|
||||||
|
git add <datei_pfad>
|
||||||
|
|
||||||
|
# Alle geänderte Dateien tracken & stagen
|
||||||
|
git add .
|
||||||
|
|
||||||
|
# Datei aus dem Arbeitsverzeichnis entfernen
|
||||||
|
git rm <datei_pfad>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Commit & Synchronize
|
||||||
|
```bash
|
||||||
|
# Commit erstellen
|
||||||
|
git commit -m "fix: Quick hotfix"
|
||||||
|
|
||||||
|
# Commit erstellen und bereits getrackten dateien stagen
|
||||||
|
git commit -am "fix: Quick hotfix"
|
||||||
|
|
||||||
|
# Alle lokalen Commits pushen
|
||||||
|
git push
|
||||||
|
|
||||||
|
# Alle lokalen Commits zu einer bestimmten branch pushen
|
||||||
|
git push origin <branch_name>
|
||||||
|
|
||||||
|
# Alle lokalen Commits zu einer neuen remote pushen
|
||||||
|
git remote add upstream <repo_link>
|
||||||
|
git push -u upstream main
|
||||||
|
```
|
||||||
|
|
||||||
|
## Zu einem alten Commit zurückkehren
|
||||||
|
```bash
|
||||||
|
# 1. Zuerst die Commit-Historie anzeigen, um den Hash des gewünschten Commits zu finden
|
||||||
|
git log # zeigt die letzten Commits an, inklusive deren Hashs (zufällige Zeichenfolge)
|
||||||
|
|
||||||
|
# Setze den Branch auf den gewünschten Commit zurück
|
||||||
|
git reset --hard <hash>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Branches
|
||||||
|
```bash
|
||||||
|
# Aktuellen Branch anzeigen
|
||||||
git branch
|
git branch
|
||||||
# Listet alle Branches auf, ein * wird neben dem aktiven Branch angezeigt
|
|
||||||
|
|
||||||
git branch [branch-name]
|
# Neuen Branch erstellen (aber nicht wechseln)
|
||||||
# Erstellt einen neuen Branch basierend auf dem aktuellen Commit
|
git branch <branch_name>
|
||||||
|
|
||||||
git checkout
|
# Neuen Branch erstellen UND direkt wechseln
|
||||||
# Wechselt zu einem anderen Branch und checkt ihn in dein Arbeitsverzeichnis ein
|
git checkout -b <branch_name>
|
||||||
|
|
||||||
git merge [branch]
|
# Zu bestehendem Branch wechseln
|
||||||
# Führt die Historie des angegebenen Branches in den aktuellen Branch zusammen
|
git checkout <branch_name>
|
||||||
|
|
||||||
git log
|
# Branch löschen
|
||||||
# Zeigt alle Commits der Historie des aktuellen Branches an
|
git branch -d <branch_name> # nur wenn schon gemerged
|
||||||
|
git branch -D <branch_name> # erzwingen
|
||||||
|
|
||||||
|
# Alle lokalen Branches anzeigen
|
||||||
|
git branch
|
||||||
|
|
||||||
|
# Remote-Branches anzeigen
|
||||||
|
git branch -r
|
||||||
|
|
||||||
|
# Alle Branches (lokal + remote)
|
||||||
|
git branch -a
|
||||||
|
|
||||||
|
# Lokalen Branch auf Remote pushen
|
||||||
|
git push -u origin <branch_name>
|
||||||
```
|
```
|
||||||
|
|
||||||
## SHARE & UPDATE
|
## Mergen
|
||||||
Updates von anderen Repositories abrufen und lokale Repositories aktualisieren
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git remote add [Alias] [URL]
|
# Aktuellen Status des Repositories anzeigen
|
||||||
# Fügt eine Git-URL als Alias hinzu
|
git status
|
||||||
|
|
||||||
git fetch [Alias]
|
# Zu dem Branch wechseln, in den du mergen willst (z.B. main)
|
||||||
# Lädt alle Branches vom angegebenen Git-Remote herunter
|
git checkout <branch_name>
|
||||||
|
|
||||||
git merge [Alias]/[Branch]
|
# Mergen eines anderen Branches (z.B. feature-branch) in den aktuellen Branch
|
||||||
# Führt einen Remote-Branch in deinen aktuellen Branch zusammen, um ihn zu aktualisieren
|
git merge <feature_branch>
|
||||||
|
|
||||||
git push [Alias] [Branch]
|
# Merge rückgängig machen, falls du den Merge noch nicht committet hast
|
||||||
# Überträgt lokale Branch-Commits zum Remote-Repository-Branch
|
git merge --abort
|
||||||
|
|
||||||
git pull
|
# Den Merge-Commit durch einen "Squash" zusammenfassen (optional)
|
||||||
# Holt und führt alle Commits aus dem Remote-Tracking-Branch zusammen
|
git merge --squash <feature_branch> # fasst alle Commits des Branches in einen zusammen
|
||||||
|
git commit # Commit erstellen
|
||||||
```
|
```
|
||||||
|
|
||||||
## TRACKING PATH CHANGES
|
## Merge Konflikte lösen
|
||||||
Dateien und Pfadänderungen versionieren
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git rm [Datei]
|
# 1. Git meldet einen Konflikt, falls es welche gibt
|
||||||
# Löscht die Datei aus dem Projekt und staged die Entfernung für den Commit
|
git status # zeigt an, welche Dateien Konflikte haben
|
||||||
|
|
||||||
git mv [alter-Pfad] [neuer-Pfad]
|
# 2. Öffne die betroffenen Dateien, um die Konflikte zu lösen
|
||||||
# Ändert den Pfad einer bestehenden Datei und staged die Verschiebung
|
# Konflikte werden in der Datei markiert:
|
||||||
|
# >>>>>>> HEAD und ======= trennen die Versionen
|
||||||
|
# Lösche die Marker und entscheide, welche Version du behalten möchtest
|
||||||
|
|
||||||
|
# 3. Nachdem du die Konflikte manuell behoben hast, markiere die Dateien als gelöst
|
||||||
|
git add <datei_mit_konflikt> # fügt die gelösten Dateien zum Staging-Bereich hinzu
|
||||||
|
|
||||||
|
# 4. Nachdem alle Konflikte gelöst sind, beende den Merge-Prozess
|
||||||
|
git commit # Commit für den Merge erstellen (Git wird eine Standard-Merge-Nachricht vorschlagen)
|
||||||
|
|
||||||
|
# 5. Falls du den Merge abbrechen möchtest, z.B. wenn du die Konflikte nicht lösen kannst
|
||||||
|
git merge --abort # Rückgängig machen und zum vorherigen Zustand zurückkehren (nur während eines unvollständigen Merges)
|
||||||
|
|
||||||
|
# 6. Falls du den Merge nach Konfliktlösung fortsetzen willst (wenn z.B. der Merge in einem "Squash"-Commit abgeschlossen wurde)
|
||||||
|
git merge --continue # Fortsetzen des Merges (normalerweise nur nach einem Rebase oder Squash, der den Merge unterbricht)
|
||||||
|
|
||||||
git log --stat -M
|
|
||||||
# Zeigt alle Commit-Logs an und kennzeichnet alle verschobenen Dateien
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## TEMPORARY COMMITS
|
## Tagging
|
||||||
Temporäres Speichern von Änderungen, um den Branch zu wechseln
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git stash
|
# Alle bestehenden Tags anzeigen
|
||||||
# Speichert alle Änderungen, die geändert oder gestaged wurden
|
git tag
|
||||||
|
|
||||||
git stash list
|
# Einen neuen Tag erstellen (z.B. v1.0.0)
|
||||||
# Listet die Änderungen im Stash-Stack auf
|
git tag <tag_name>
|
||||||
|
|
||||||
git stash pop
|
# Einen Tag mit einer Nachricht versehen
|
||||||
# Holt die Änderungen vom obersten Stack und schreibt sie in das Arbeitsverzeichnis
|
git tag -a <tag_name> -m "Tag Nachricht"
|
||||||
|
|
||||||
git stash drop
|
# Einen Tag zu einem bestimmten Commit erstellen (z.B. nach Commit ID)
|
||||||
# Entfernt die Änderungen vom obersten Stack
|
git tag <tag_name> <commit_hash>
|
||||||
|
|
||||||
|
# Einen Tag auf einem Remote-Repository veröffentlichen
|
||||||
|
git push origin <tag_name>
|
||||||
|
|
||||||
|
# Alle Tags auf das Remote-Repository pushen
|
||||||
|
git push --tags
|
||||||
|
|
||||||
|
# Einen Tag löschen (lokal)
|
||||||
|
git tag -d <tag_name>
|
||||||
|
|
||||||
|
# Einen Tag löschen (remote)
|
||||||
|
git push --delete origin <tag_name>
|
||||||
|
|
||||||
|
# Einen Tag auf einen bestimmten Commit verschieben (z.B. nach Commit ID)
|
||||||
|
git tag -f <tag_name> <commit_hash>
|
||||||
|
|
||||||
|
# Einen Tag auschecken, um zu diesem Punkt im Repository zu gehen
|
||||||
|
git checkout <tag_name>
|
||||||
|
|
||||||
|
# Einen Tag mit einer Nachricht bearbeiten (falls nicht noch gepusht)
|
||||||
|
git tag -a <tag_name> -m "Neue Nachricht" <commit_hash>
|
||||||
```
|
```
|
||||||
|
|
||||||
## 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*/
|
|
||||||
```
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue