diff --git a/.gitea/workflows/release_automation.yml b/.gitea/workflows/release_automation.yml index 6407c7a..4cba1c1 100644 --- a/.gitea/workflows/release_automation.yml +++ b/.gitea/workflows/release_automation.yml @@ -7,7 +7,7 @@ on: paths-ignore: - '.gitea/**' - '.github/**' - - 'README.md' + - '*.md' - 'jellyfin.ruleset' - '.gitignore' - '.editorconfig' diff --git a/git_cheat_sheet.md b/git_cheat_sheet.md new file mode 100644 index 0000000..798c3ed --- /dev/null +++ b/git_cheat_sheet.md @@ -0,0 +1,106 @@ +# 🚀 Git Cheat Sheet: Branches, Merge, Rebase & VS Code + +## 🌳 Branches (Zweige) +* **`main`** → Stabiler Stand, Production-ready (Deployment). +* **`dev`** → Aktive Entwicklung, Sammelbecken fĂŒr Features. + +--- + +## 🛠 ZusammenfĂŒhren von Änderungen + +### Git Merge +FĂŒhrt zwei Zweige zusammen. Git sucht den letzten gemeinsamen Basispunkt und erstellt einen neuen **Merge-Commit**. + +```bash +git checkout dev +git merge main +``` + +| Details | | +|-----------|--------| +| Wann? | In Team-Branches, bei bereits gepushten Branches, wenn StabilitĂ€t wichtiger als eine saubere History ist. | +| Vorteile | Sicher, einfach nachvollziehbar, schreibt die History nicht um. | +| Nachteile | Die History kann bei vielen Merges unĂŒbersichtlich ("Spaghetti-Graph") werden. | + +### Git Rebase +Setzt deine Commits neu auf die Spitze eines anderen Branches. Die Commit-IDs werden dabei neu geschrieben. + +```bash +git checkout dev +git rebase main +``` + +| Details | | +|-----------|--------| +| Wann? | In lokalen Feature-Branches (bevor sie geteilt werden), um die History sauber zu halten. | +| Vorteile | Erzeugt eine perfekt lineare, leicht lesbare History. | +| Nachteile | ⚠ GefĂ€hrlich auf geteilten/öffentlichen Branches. Konflikte mĂŒssen ggf. fĂŒr jeden einzelnen Commit gelöst werden. | + +--- + +## 📩 TemporĂ€res Speichern & Spezialbefehle + +### Stash (Das "Regal") +Speichert uncommitted Changes temporĂ€r, um das Arbeitsverzeichnis sauber zu machen, ohne zu committen. + +```bash +git stash # Änderungen "parken". +git stash pop # Änderungen zurĂŒckholen und Stash leeren. +``` + +**Wann?** Wenn du schnell den Branch wechseln musst, aber deine Arbeit noch nicht fertig ist. + +### Cherry-pick +Kopiert einen ganz gezielten Commit von einem Branch in deinen aktuellen. + +```bash +git cherry-pick +``` + +**Wann?** Wenn ein Bugfix auf dem falschen Branch gelandet ist oder du nur eine einzige Funktion aus einem Feature-Branch brauchst. + +--- + +## 🔄 Checkout & Switch + +```bash +git checkout dev # oder git switch dev – Wechselt zum Branch. +git checkout -f dev # Force Checkout: Wechselt den Branch und verwirft alle ungespeicherten lokalen Änderungen unwiderruflich! ⚠ +``` + +--- + +## đŸ’» VS Code Git-Optionen (UI) + +VS Code bietet beim Branch-Wechsel oft drei intelligente Optionen an: + +* **Migrate Changes ⭐** + * Nimmt deine aktuellen Änderungen einfach mit in den neuen Branch. + * (Intern: stash → switch → stash pop). +* **Stash & Checkout** + * Parkt deine Änderungen sicher im Stash und wechselt den Branch. Die Änderungen bleiben im Stash, bis du sie manuell wieder herausholst. +* **Force Checkout ⚠** + * Wechselt den Branch und löscht deine aktuellen, ungespeicherten Änderungen. Nur nutzen, wenn die Arbeit weggeworfen werden kann. + +--- + +## 🔄 Typischer Sync-Workflow + +Um den Entwicklungs-Branch aktuell zu halten, nachdem dev in main gemerged wurde: + +1. Auf dev entwickeln. +2. Merge dev → main fĂŒr das Release. +3. ZurĂŒck auf dev wechseln: + ```bash + git checkout dev + git merge main # (oder rebase), um den neuesten Stand vom Main wieder in Dev zu haben. + ``` + +--- + +## 🧠 MerksĂ€tze + +* **Merge** = Historien verbinden (Sicher & Dokumentiert). +* **Rebase** = Historie neu schreiben (Linear & Sauber). +* **Stash** = "Ich parke das mal kurz hier." +* **Migrate Changes** = Sicherer Branch-Wechsel mit "GepĂ€ck".