adminslog/dokus/git/git_workflow.md
2025-07-20 01:08:19 +00:00

245 lines
6.8 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
<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.