245 lines
6.8 KiB
Markdown
245 lines
6.8 KiB
Markdown
# Git Workflow
|
||
|
||

|
||
|
||
## 📝 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
|
||
<prefix>/<bereich>-<kurze-beschreibung>
|
||
```
|
||
|
||
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.
|