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*/ -```