|--------|-------|
| `branches.sh` | Definiert die Iterationsliste `$BRANCHES` mit allen Branch-Namen als direkte Zeichenketten |
| `lib.sh` | Shared Library mit `$BRANCH_NAMES`-Array und den Funktionen `find_common_tag_suffixes()` und `reset_branches_to_remote()` |
-| `push.sh` | Force-pusht alle Branches und gemeinsame Tags zu origin; legt bei Bedarf TIMESTAMP-Backup-Tags an |
+| `push.sh` | Force-pusht alle Branches zu origin; legt bei Bedarf TIMESTAMP-Backup-Tags an; mit `--tag <suffix>` werden alle Branches zusätzlich getaggt und die Tags gepusht; `--force` überschreibt bestehende Tags |
| `reset.sh` | Setzt alle Branches zurück — auf `origin/<branch>` oder auf einen Tag-Stand |
| `diff.sh` | Zeigt Diffs aller Branches an — lokal gegen origin, gegen einen Tag-Stand, oder zwei Tag-Stände gegeneinander |
| `copy.sh` | Kopiert Branches in die Übungsverzeichnisse (`vorlagen/`, `livecoding/`, `spickzettel/`); bereinigt veraltete Verzeichnisse automatisch; optionale `schulung.conf` schränkt die kopierten Branches ein (siehe unten) |
Jede Rebase-Session taggt jeden abgeschlossenen Branch als `<branch>--claude-N`. Die Tag-Nummer erhöht sich pro Session. Tags dienen als Wiederherstellungspunkte — `./reset.sh claude-N` setzt alle Branches auf die entsprechenden Tags zurück. Immer direkt nach Abschluss eines Branches taggen, bevor mit dem nächsten begonnen wird.
-**Am Ende jeder Session: alle Branches taggen** — auch solche, die sich in dieser Session nicht geändert haben. Branches ohne neue Änderungen erhalten ein `--claude-N`-Tag auf demselben Commit wie ihr `--claude-(N-1)`-Tag:
+**Am Ende jeder Session: alle Branches taggen und pushen** — auch solche, die sich in dieser Session nicht geändert haben. Das übernimmt `push.sh --tag`:
```bash
-for tag_prev in $(git tag | grep -- '--claude-N$'); do
- tag_new="${tag_prev%--claude-(N-1)}--claude-N"
- if ! git tag | grep -qxF "$tag_new"; then
- git tag "$tag_new" "$(git rev-list -1 "$tag_prev")"
- fi
-done
+./push.sh --tag claude-N --force
```
-*(N durch die aktuelle Session-Nummer ersetzen.)*
+`--force` ist nötig, weil Branches während der Session bereits einzeln getaggt wurden und die Tags nun überschrieben werden müssen. *(N durch die aktuelle Session-Nummer ersetzen.)*
## Wesentliche Einschränkungen