Skip to content
Apothem
CLI-Referenz

rollback

CLI-Referenz für den Befehl apothem rollback.

Setzt einen Harness auf den Zustand vor seiner aufgezeichneten Installation zurück.

Übersicht

apothem rollback --harness NAME|all [--install-id ULID | --last] [--yes]
                 [--project PATH]
                 [--quiet|-q] [--verbose|-v]
                 [--format plain|json] [--json] [--no-color]

rollback versetzt jeden ausgewählten Harness in den Zustand zurück, in dem er sich vor dem aufgezeichneten Installationsdurchlauf befand — standardmäßig dem neuesten oder dem durch --install-id benannten. Dabei arbeitet es den Ledger-Eintrag dieser Installation ab, die neueste Änderung zuerst, und:

  • stellt jede Datei und jedes Verzeichnis, die die Installation überschrieben hat, aus der von der Installation erfassten Sicherung an ihrem aufgezeichneten Pfad wieder her (ein Verzeichnis, das die Installation ersetzt hat, wird exakt wiederhergestellt, ohne die Dateien, die die Installation ihm hinzugefügt hat);
  • entfernt jede Datei und jedes Verzeichnis, die die Installation angelegt hat, und stellt jeden Pfad des veralteten Layouts wieder her, den die Installation beseitigt hat;
  • entfernt die gemeinsamen Datenspeicher (memory, contexts, learning), die die Installation angelegt hat, sofern nicht ein anderer installierter Harness sie noch verwendet;
  • entfernt die Verzeichnisse, die die Installation angelegt hat, sobald sie leer sind.

Eine Datei oder ein Ordner in Ihrem Home-Verzeichnis, die bzw. den auch andere Installationen verwenden (ein Skills-Ordner oder ~/.config/apothem/), wird wie die gemeinsamen Datenspeicher behandelt: Rollback behält sie bzw. ihn, solange eine andere Installation sie bzw. ihn noch aufführt, und stellt sie bzw. ihn nur für die letzte Installation, die sie bzw. ihn verwendet, wieder her oder entfernt sie bzw. ihn. Ein Ordner, den diese Installation bereits vorgefunden hat (ein zweites Werkzeug, das nach dem ersten installiert wurde), wird mit der letzten Installation entfernt, die ihn verwendet, wenn eine Installation ihn angelegt hat, die ihn inzwischen freigegeben hat, sodass das Zurücksetzen jedes Werkzeugs nichts zurücklässt. Wenn sich der Eintrag einer Installation, die den Ordner verwenden könnte, nicht lesen lässt, bricht Rollback mit einem Fehler ab, bevor es etwas ändert, und schreibt keinen rollback-Eintrag; reparieren Sie den Eintrag und führen Sie den Befehl erneut aus.

Alles, was rollback entfernt oder ersetzt, wird zuerst in die Apothem-Sicherungswurzel (~/.apothem/backups/) kopiert, sodass sich ein Rollback selbst von Hand rückgängig machen lässt. Anschließend hängt Rollback einen rollback-Eintrag an das Harness-Ledger an. Das Zurücksetzen einer älteren Installation stellt nur die Ziele, die diese ältere Installation erfasst hat, wieder her oder entfernt sie, und nimmt jede spätere Installation an derselben Wurzel aus den aktiven Installationen des Ledgers heraus. Dateien, die eine spätere Installation außerhalb dieser Ziele hinzugefügt hat, bleiben an ihrem Ort.

Das Ledger behält die neuesten 10 Installationseinträge pro Installationswurzel (mit den Sicherungen, auf die sie verweisen); eine ältere Installation lässt sich nicht mehr per ID zurücksetzen und meldet rollback.no_record. apothem backups prune senkt diese Grenze bei Bedarf und entfernt niemals die Sicherung, aus der die Wiederherstellung für die neueste Installation erfolgt.

Einträge, die ein Apothem-Release geschrieben hat, bevor dieses Verhalten hinzugefügt wurde, führen nicht auf, welche Dateien die Installation angelegt hat; das Zurücksetzen eines solchen Eintrags stellt nur die überschriebenen Dateien wieder her.

Pro Harness wird eine Bestätigung abgefragt, sofern nicht --yes angegeben ist. Wenn keine Abfrage möglich ist — bei --format json (der Abfragetext würde das einzelne JSON-Dokument beschädigen) oder in einer nicht interaktiven Shell (kein TTY) —, verweigert der Befehl den Vorgang von vornherein mit einem strukturierten rollback.confirmation_required-Fehler (Exit-Code 1), sofern nicht --yes angegeben ist. --install-id und --last wählen den Installationsdurchlauf aus und schließen sich gegenseitig aus.

Ein Rollback mit --harness all ist bewusst erschöpfend: Er umfasst jeden registrierten Harness, einschließlich derer, die exclude_harnesses des Profils bei der Installation überspringt. Das Wiederherstellen des Zustands vor der Installation ist ein Aufräumvorgang; daher erreicht er auch Einträge, die eine zuvor breiter angelegte Installation hinterlassen haben kann. Ein Harness ohne aufgezeichnete Installation schlägt als Zeile mit "outcome": "error" in results fehl (siehe JSON-Ausgabe), und der Durchlauf wird mit den übrigen Harnesses fortgesetzt. Der Befehl endet dann mit Exit-Code 1, wenn nichts zurückgesetzt wurde, oder mit Exit-Code 2 (Teilergebnis), wenn mindestens ein Ziel zurückgesetzt und zugleich ein Fehler verzeichnet wurde.

Optionen

OptionBeschreibung
--harness NAMEZurückzusetzender Harness-Adapter oder all für die registry-weite Menge (erforderlich).
--install-id ULIDSetzt den benannten Installationsdurchlauf zurück. Standardmäßig die neueste aufgezeichnete Installation.
--lastSetzt die neueste aufgezeichnete Installation zurück (der Standard; die explizite Form). Schließt sich mit --install-id gegenseitig aus.
--yesÜberspringt die Bestätigungsabfrage pro Harness.
--project PATHProjektwurzel für Harnesses mit Projektgeltungsbereich. Erforderlich, wenn die ausgewählte Menge Adapter mit Projektgeltungsbereich enthält.
--quiet, -qUnterdrückt informative Ausgaben; nur Fehler werden ausgegeben.
--verbose, -vGibt zusätzliche Diagnoseausgaben aus.
--format plain|jsonAusgabeformat (Standard: plain).
--jsonKurzform für --format json.
--no-colorDeaktiviert ANSI-Farbcodes in der Ausgabe.
-h, --helpZeigt die Hilfe an und beendet den Befehl.

JSON-Ausgabe

Das Beispiel ist der äußere Rahmen für einen einzelnen, benannten Harness. Bei --harness all hat harness den Wert all, output_path den Wert null, und results enthält die Zeilen jedes ausgewählten Harness.

{
  "schema_version": 1,
  "status": "success",
  "command": "rollback",
  "action": "rolled_back",
  "harness": "claude-code",
  "profile_path": null,
  "project": null,
  "files_written": [],
  "results": [],
  "warnings": [],
  "error": null,
  "output_path": "C:\\Users\\Example\\.claude\\settings.json"
}

Jedes wiederhergestellte oder entfernte Ziel erscheint in results mit "operation": "rollback" und einem outcome von created oder updated (und in files_written); die message gibt an, ob der Pfad wiederhergestellt oder entfernt wurde. Eine fehlgeschlagene Wiederherstellung (zum Beispiel bei einer gelöschten Sicherung) ist "outcome": "error". Eine Installation, die keine Änderungen aufgezeichnet hat, wird mit "outcome": "skipped" gemeldet. Wenn für einen einzelnen benannten Harness kein passender Installationseintrag existiert, meldet der Befehl einen rollback.no_record-Fehler mit "status": "error". Bei --harness all ist ein Harness ohne passenden Eintrag stattdessen eine Zeile mit "outcome": "error" in results.

Beispiele

apothem rollback --harness claude-code --last
apothem rollback --harness claude-code --install-id 01J9Z… --yes
apothem rollback --harness cursor --project . --last --json

Exit-Codes

CodeBedeutung
0Erfolgreich zurückgesetzt oder nichts zurückzusetzen (die Installation hat keine Änderungen aufgezeichnet)
1Erwarteter Fehler — kein Installationseintrag, widersprüchliche Selektoren, unbekannter Harness, fehlende Projektwurzel oder abgelehnte bzw. nicht verfügbare Bestätigung (nicht interaktiver oder JSON-Modus ohne --yes)
2Teilergebnis — mindestens ein Ziel wurde zurückgesetzt, und zusätzlich wurde ein Fehlschlag aufgezeichnet (eine fehlgeschlagene Wiederherstellung oder, bei --harness all, ein Harness ohne Installationseintrag)
64Verwendungsfehler: eine unbekannte Option oder ein unbekannter Befehl oder ein fehlender oder ungültiger Optionswert. Unter --json ist der Fehler ein JSON-Umschlag mit dem Code cli.usage.

Siehe auch

On this page