From 7e4857b2717677f86df83c36c6273fba8c52ad70 Mon Sep 17 00:00:00 2001
From: David Hess <3002833@stud.hs-mannheim.de>
Date: Tue, 8 Apr 2025 12:23:58 +0200
Subject: [PATCH] Update Extras/Cheat_Sheet.md
---
Extras/Cheat_Sheet.md | 265 ++++++++++++++++++++++--------------------
1 file changed, 136 insertions(+), 129 deletions(-)
diff --git a/Extras/Cheat_Sheet.md b/Extras/Cheat_Sheet.md
index f3ddf80..f5777ed 100644
--- a/Extras/Cheat_Sheet.md
+++ b/Extras/Cheat_Sheet.md
@@ -1,164 +1,171 @@
-# Git Cheat Sheet
-
-## STAGING & SNAPSHOTS
-Arbeiten mit Snapshots und dem Git-Staging-Bereich
+# Git Cheatsheet
+## Login / Authentifizieren
```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
+# Git-User-Info lokal setzen (für Commits)
+git config --global user.name "Dein Name"
+git config --global user.email "deine@email.de"
```
-## 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
-
+## Create & Clone
```bash
+# Aktuellen Ordner in eine Repository verwandeln
git init
-# Initialisiert ein bestehendes Verzeichnis als Git-Repository
-git clone [URL]
-# Klont ein gesamtes Repository von einem gehosteten Standort via URL
+# Repository von einem Link klonen
+git clone
+
+# Repository von einem Link zu einem bestimmten Pfad klonen
+git clone
```
-## BRANCH & MERGE
-Arbeiten mit Branches, den Kontext wechseln und Änderungen integrieren
-
+## Add & Remove
```bash
+# Einzelne Datei tracken & stagen
+git add
+
+# Alle geänderte Dateien tracken & stagen
+git add .
+
+# Datei aus dem Arbeitsverzeichnis entfernen
+git rm
+```
+
+## 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
+
+# Alle lokalen Commits zu einer neuen remote pushen
+git remote add upstream
+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
+```
+
+## Branches
+```bash
+# Aktuellen Branch anzeigen
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
+# Neuen Branch erstellen (aber nicht wechseln)
+git branch
-git checkout
-# Wechselt zu einem anderen Branch und checkt ihn in dein Arbeitsverzeichnis ein
+# Neuen Branch erstellen UND direkt wechseln
+git checkout -b
-git merge [branch]
-# Führt die Historie des angegebenen Branches in den aktuellen Branch zusammen
+# Zu bestehendem Branch wechseln
+git checkout
-git log
-# Zeigt alle Commits der Historie des aktuellen Branches an
+# Branch löschen
+git branch -d # nur wenn schon gemerged
+git branch -D # 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
```
-## SHARE & UPDATE
-Updates von anderen Repositories abrufen und lokale Repositories aktualisieren
-
+## Mergen
```bash
-git remote add [Alias] [URL]
-# Fügt eine Git-URL als Alias hinzu
+# Aktuellen Status des Repositories anzeigen
+git status
-git fetch [Alias]
-# Lädt alle Branches vom angegebenen Git-Remote herunter
+# Zu dem Branch wechseln, in den du mergen willst (z.B. main)
+git checkout
-git merge [Alias]/[Branch]
-# Führt einen Remote-Branch in deinen aktuellen Branch zusammen, um ihn zu aktualisieren
+# Mergen eines anderen Branches (z.B. feature-branch) in den aktuellen Branch
+git merge
-git push [Alias] [Branch]
-# Überträgt lokale Branch-Commits zum Remote-Repository-Branch
+# Merge rückgängig machen, falls du den Merge noch nicht committet hast
+git merge --abort
-git pull
-# Holt und führt alle Commits aus dem Remote-Tracking-Branch zusammen
+# Den Merge-Commit durch einen "Squash" zusammenfassen (optional)
+git merge --squash # fasst alle Commits des Branches in einen zusammen
+git commit # Commit erstellen
```
-## TRACKING PATH CHANGES
-Dateien und Pfadänderungen versionieren
-
+## Merge Konflikte lösen
```bash
-git rm [Datei]
-# Löscht die Datei aus dem Projekt und staged die Entfernung für den Commit
+# 1. Git meldet einen Konflikt, falls es welche gibt
+git status # zeigt an, welche Dateien Konflikte haben
-git mv [alter-Pfad] [neuer-Pfad]
-# Ändert den Pfad einer bestehenden Datei und staged die Verschiebung
+# 2. Öffne die betroffenen Dateien, um die Konflikte zu lösen
+# 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 # 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
-Temporäres Speichern von Änderungen, um den Branch zu wechseln
-
+## Tagging
```bash
-git stash
-# Speichert alle Änderungen, die geändert oder gestaged wurden
+# Alle bestehenden Tags anzeigen
+git tag
-git stash list
-# Listet die Änderungen im Stash-Stack auf
+# Einen neuen Tag erstellen (z.B. v1.0.0)
+git tag
-git stash pop
-# Holt die Änderungen vom obersten Stack und schreibt sie in das Arbeitsverzeichnis
+# Einen Tag mit einer Nachricht versehen
+git tag -a -m "Tag Nachricht"
-git stash drop
-# Entfernt die Änderungen vom obersten Stack
+# Einen Tag zu einem bestimmten Commit erstellen (z.B. nach Commit ID)
+git tag
+
+# Einen Tag auf einem Remote-Repository veröffentlichen
+git push origin
+
+# Alle Tags auf das Remote-Repository pushen
+git push --tags
+
+# Einen Tag löschen (lokal)
+git tag -d
+
+# Einen Tag löschen (remote)
+git push --delete origin
+
+# Einen Tag auf einen bestimmten Commit verschieben (z.B. nach Commit ID)
+git tag -f
+
+# Einen Tag auschecken, um zu diesem Punkt im Repository zu gehen
+git checkout
+
+# Einen Tag mit einer Nachricht bearbeiten (falls nicht noch gepusht)
+git tag -a -m "Neue Nachricht"
```
-## 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*/
-```