# Git Workflow ![Git Logo](../../media/logo-git.png) ## 📝 Inhalt - [Git Workflow](#git-workflow) - [📝 Inhalt](#-inhalt) - [📦 Workflow](#-workflow) - [✏️ Neues Feature starten](#️-neues-feature-starten) - [💾 Arbeiten und Zwischenspeichern](#-arbeiten-und-zwischenspeichern) - [🔄 Zwischenstand von main holen (wenn andere auch pushen)](#-zwischenstand-von-main-holen-wenn-andere-auch-pushen) - [✅ Feature fertig? Merge in main](#-feature-fertig-merge-in-main) - [❌ Oops! Auf main gearbeitet?](#-oops-auf-main-gearbeitet) - [✅ Git-Regeln für sauberes Arbeiten](#-git-regeln-für-sauberes-arbeiten) - [💡 Git Merksätze](#-git-merksätze) - [ℹ️ Mini-Cheatsheet](#ℹ️-mini-cheatsheet) - [📦 GIT\_BRANCH\_CLEANUP.md](#-git_branch_cleanupmd) - [🧹 Wann lösche ich einen Feature-Branch?](#-wann-lösche-ich-einen-feature-branch) - [✅ Nach dem Merge in `main`](#-nach-dem-merge-in-main) - [❗ Nicht löschen, wenn …](#-nicht-löschen-wenn-) - [🔁 Nachträglich löschen (wenn vergessen)](#-nachträglich-löschen-wenn-vergessen) - [📦 Merksatz](#-merksatz) - [📦 Branch-Namenskonventionen](#-branch-namenskonventionen) - [🔧 Aufbau](#-aufbau) - [📚 Übersicht der Präfixe](#-übersicht-der-präfixe) - [🧼 Empfehlung für Schönheitskorrekturen](#-empfehlung-für-schönheitskorrekturen) - [📝 Hinweis](#-hinweis) ## 📦 Workflow Tägliche Arbeit mit Git --- ### ✏️ Neues Feature starten ```bash git checkout main git pull git checkout -b feature/mein-feature ``` > ➔ Jetzt bist du auf einem neuen Branch. Alles was du änderst, bleibt NUR hier. --- ### 💾 Arbeiten und Zwischenspeichern ```bash git add . git commit -m "WIP: Kurze Beschreibung meiner Arbeit" ``` - `WIP` = Work in Progress - Lieber öfter kleine Commits als einen Monster-Commit. --- ### 🔄 Zwischenstand von main holen (wenn andere auch pushen) ```bash git pull origin main ``` - **Wichtig:** Nur im Feature-Branch bleiben! - `git pull` sorgt dafür, dass du aktuellen Code hast. --- ### ✅ Feature fertig? Merge in main ```bash git checkout main git pull git merge feature/mein-feature git push ``` - Danach kannst du den Branch löschen: ```bash git branch -d feature/mein-feature ``` --- ### ❌ Oops! Auf main gearbeitet? Noch **kein Commit** gemacht? ```bash git checkout -b feature/schnell-gerettet ``` > ➔ Änderungen wandern automatisch mit. `main` bleibt sauber. --- ### ✅ Git-Regeln für sauberes Arbeiten - Niemals direkt auf `main` coden. - Immer neuen Branch für neue Aufgaben. - Vor dem `git pull` **immer committen** oder **stashen**. - Viele kleine Commits sind besser als ein riesiger. - Beim Merge zuerst `git pull`, dann `merge`. --- ### 💡 Git Merksätze | **Situation** | **Lösung** | |:---|:---| | Änderungen da, noch kein Commit | `git checkout -b neuer-branch` | | Änderungen gestaged, aber kein Commit | Geht genauso: `git checkout -b neuer-branch` | | Änderungen gemacht, will aber neuen Stand von origin | Erst `commit` oder `stash`, dann `pull` | | Feature abgeschlossen | `merge` zurück auf `main` | --- ### ℹ️ Mini-Cheatsheet ```bash git add . # Alle Änderungen vormerken git commit -m "Commit" # Änderungen sichern git checkout main # Wechsel auf main git pull # main aktualisieren git checkout -b neuer-branch # Neuen Feature-Branch starten ``` [🚀 TOP](#-inhalt) --- ## 📦 GIT_BRANCH_CLEANUP.md ### 🧹 Wann lösche ich einen Feature-Branch? #### ✅ Nach dem Merge in `main` ```bash # Lokal löschen git branch -d feature/xyz # Remote löschen git push origin --delete feature/xyz ``` #### ❗ Nicht löschen, wenn … - Der Branch wird noch gebraucht (z. B. Review, Bugfix) - Der Merge war nur testweise oder unvollständig - Du arbeitest noch weiter dran --- ### 🔁 Nachträglich löschen (wenn vergessen) ```bash # Lokalen Branch löschen git branch -d feature/xyz # Remote-Branch löschen git push origin --delete feature/xyz ``` --- ### 📦 Merksatz | Feature fertig und gemerged? | Dann: | |:---|:---| | ✅ | `git branch -d` + `git push origin --delete` | | ❌ oder nicht sicher | Branch behalten | [🚀 TOP](#-inhalt) --- ## 📦 Branch-Namenskonventionen Dieses Dokument beschreibt die standardisierten Branch-Namenskonventionen für unser Projekt. Ziel ist eine klare, nachvollziehbare Struktur für parallele Entwicklungszweige. --- ### 🔧 Aufbau Alle Branch-Namen folgen diesem Schema: ```plaintext /- ``` Beispiel: ```plaintext feature/user-login refactor/frontend-structure chore/update-readme ``` Optional mit Ticket- oder Issue-ID: ```plaintext feature/123-user-login bugfix/87-fix-auth-header ``` --- ### 📚 Übersicht der Präfixe | Präfix | Zweck | Beispiel | |--------------|------------------------------------------------------|------------------------------------------| | `feature/` | Neue Funktionen / Erweiterungen | `feature/pdf-export` | | `bugfix/` | Fehlerbehebung (nicht kritisch) | `bugfix/button-hover` | | `hotfix/` | Kritische Fehlerbehebung auf produktivem System | `hotfix/payment-error` | | `refactor/` | Code-Umbau ohne Funktionsänderung | `refactor/state-management` | | `chore/` | Wartung, Infrastruktur, Dokumentation | `chore/clean-docker`, `chore/update-doc` | | `cleanup/` | Entfernen von Altlasten oder veralteten Strukturen | `cleanup/unused-scripts` | | `test/` | Tests und Testinfrastruktur | `test/mock-api` | | `docs/` | Dokumentationsänderungen | `docs/setup-instructions` | | `ci/` | Änderungen an CI/CD oder Build-System | `ci/add-github-actions` | | `wip/` | Work in Progress (noch nicht bereit für Merge) | `wip/experimental-ui` | | `release/` | Vorbereitung und Verwaltung von Releases | `release/v1.2.0` | | `revert/` | Rücknahme von früheren Änderungen | `revert/broken-auth` | --- ### 🧼 Empfehlung für Schönheitskorrekturen Für reine Schönheits- und Strukturkorrekturen (keine funktionalen Änderungen): - `refactor/ui-cleanup` - `chore/html-beautify` - `cleanup/unused-css` --- ### 📝 Hinweis - Branch-Namen **immer klein schreiben**, mit `-` als Trenner. - Kein Datum, kein Entwicklerkürzel im Namen (außer bei besonderen Teamregeln). - `main` oder `master` ist unser stabiler Produktionszweig.