Image-Name muss immer `juplo/<artifactId>:<version>` (Maven) oder `juplo/${project.name}:${project.version}` (Gradle) entsprechen.
-### Rebase-Strategie nach Branch-Typ
+### ROOT eines Branches ermitteln
-Alle Rebases folgen dem `git checkout -B <branch> <ROOT>--claude-N` + `git cherry-pick <commits>`-Muster statt `git rebase`, weil Konflikte die Norm sind. Die eindeutigen Commits ermitteln:
+Der ROOT jedes Branches ist in `BRANCHES.sh` (auf dem `scripting`-Branch) als `<variable>__ROOT`-Variable definiert. **Vor jedem Rebase** den ROOT nachschlagen:
```bash
-git log --oneline --reverse <branch>--claude-N ^<ROOT>--claude-N
+git checkout scripting
+grep "^<variante>__ROOT" BRANCHES.sh
+# oder: alle ROOTs auflisten
+grep "__ROOT=" BRANCHES.sh
```
-**Standard-Lösungs-Branches:**
+Alternativ lässt sich der ROOT auch aus dem `--claude-N`-Tag ableiten:
```bash
-git checkout -B <branch> <ROOT>--claude-N
-git cherry-pick <commit1> <commit2> ...
-git tag <branch>--claude-N
+git log --oneline -3 <branch>--claude-N
+# Die letzten Commits zeigen, welcher Eltern-Branch vorausgeht
```
-**`--vorlage`-Branches** (ROOT = der entsprechende Lösungs-Branch, bereits rebasiert):
+### Rebase-Strategie nach Branch-Typ
+
+Alle Rebases erfolgen mit `git rebase -i <ROOT>--claude-N`, nachdem der Branch auf den neuen Stand des ROOT zurückgesetzt wurde:
+
```bash
git checkout -B <branch> <ROOT>--claude-N
-git cherry-pick <einzelner-vorlage-commit>
+git rebase -i <ROOT>--claude-N # oder: git rebase -i HEAD (da HEAD = ROOT)
+```
+
+Im interaktiven Editor zeigt Git alle Commits des Branches. Im Normalfall werden alle Commits mit `pick` übernommen. Bei Konflikten:
+- Konflikt lösen, `git add` der gelösten Dateien, dann `git rebase --continue`
+- `git rebase --abort` wenn die Situation unklar ist — danach neu analysieren und mit neuem `git rebase -i` fortfahren
+
+```bash
git tag <branch>--claude-N
```
+
+**Hinweis:** Im Gegensatz zu `git cherry-pick` mit manuell gesammelten Commit-Hashes erkennt `git rebase -i` automatisch alle Commits des Branches. Commits können direkt im Editor mit `drop` entfernt oder mit `edit` zur Nachbearbeitung markiert werden.
+
+**`--vorlage`-Branches** (ROOT = der entsprechende Lösungs-Branch, bereits rebasiert):
Vorlage-Commits löschen typischerweise `README.sh`, vereinfachen Java-Dateien (entfernen Callbacks) oder löschen Build-Dateien bei reinen Infrastruktur-Setups. Diese Löschungen sind intentional.
**`--livecoding--schritte`-Branches:**
-Wie Vorlage, aber alle Schritt-Commits in Reihenfolge cherry-picken. Besondere Regeln siehe Abschnitt "Live-Codings".
+Alle Schritt-Commits in Reihenfolge übernehmen. Besondere Regeln siehe Abschnitt "Live-Codings".
**Reine Infrastruktur-Branches** (kein Java-Quellcode, keine Build-Dateien):
-Der Cherry-Pick löscht korrekt `pom.xml`, `build.gradle`, `src/` usw. Diese Löschungen sind intentional.
+Der Rebase löscht korrekt `pom.xml`, `build.gradle`, `src/` usw. Diese Löschungen sind intentional.
### Wiederkehrende Konfliktmuster