[{"data":1,"prerenderedAt":302},["ShallowReactive",2],{"blog-de-version-history-is-not-a-backup":3},{"id":4,"title":5,"body":6,"category":265,"cover":266,"coverAlt":266,"description":267,"draft":268,"extension":269,"faq":270,"image":283,"keywords":284,"meta":290,"navigation":291,"ogTitle":292,"path":293,"published":294,"seo":295,"stem":296,"tldr":297,"updated":294,"__hash__":301},"blog_de\u002Fblog\u002Fversion-history-is-not-a-backup.md","Der Versionsverlauf ist kein Backup. Er holt keine Tabelle zurück.",{"type":7,"value":8,"toc":253},"minimark",[9,13,16,24,29,32,35,38,42,45,48,51,55,58,133,139,142,146,149,152,168,171,175,178,181,184,188,191,196,205,208,216,220,240],[10,11,12],"p",{},"Etwas ging kaputt, also hast du das Naheliegende getan. Du hast den\nVersionsverlauf in Lovable oder Bolt geöffnet, die Fassung von heute Morgen\ngesucht und auf Wiederherstellen geklickt. Die App kam exakt so zurück, wie sie\nwar.",[10,14,15],{},"Die Daten nicht.",[10,17,18,19,23],{},"Hier ist der Punkt, an dem Leute hängen bleiben: ",[20,21,22],"strong",{},"dein Code und deine Daten\nsind zwei getrennte Systeme, und nur eines davon hat einen Rückgängig-Knopf.","\nDein Builder verwahrt die Baupläne deiner App. Deine Datenbank hält, was darin\nsteht. Der Versionsverlauf baut die Pläne perfekt nach, bis ins letzte Detail,\nund gibt dir ein identisches, leeres Gebäude zurück.",[25,26,28],"h2",{"id":27},"sichert-der-versionsverlauf-meines-builders-meine-datenbank","Sichert der Versionsverlauf meines Builders meine Datenbank?",[10,30,31],{},"Nein. Er sichert deinen Code, und deine Daten liegen ganz woanders.",[10,33,34],{},"Lovable, Bolt, v0, Replit, Cursor und der Rest führen alle eine Historie deiner\nProjektdateien: deiner Seiten, deiner Komponenten, deiner Logik, deiner\nGestaltung. Das sind die Pläne. Eine Fassung wiederherzustellen schreibt diese\nDateien auf den Stand des gewählten Tages zurück.",[10,36,37],{},"Deine Datenbank ist ein anderer Dienst, fast immer Supabase, auf einem eigenen\nKonto. Nichts in deinem Projektverlauf greift dort hinein. Die\nWiederherstellung hat keine Meinung zu deinen Daten, weil sie deine Daten nicht\nsehen kann.",[25,39,41],{"id":40},"warum-code-und-daten-an-zwei-verschiedenen-orten-liegen","Warum Code und Daten an zwei verschiedenen Orten liegen",[10,43,44],{},"Weil deine Daten genau das überstehen müssen, was dein Code ständig tut: sich\nändern.",[10,46,47],{},"Dein Code wird bei jedem Ausliefern neu gebaut. Lägen die Bestellungen deiner\nNutzer darin, wären sie jedes Mal weg, wenn du einen Knopf reparierst. Also\nwerden beide bewusst getrennt gehalten: Der Code ist ersetzbar, die Daten sind\nes nicht, und deshalb versioniert sie unterschiedliches Werkzeug.",[10,49,50],{},"Der Preis dieser Trennung ist das Thema dieses Artikels. Jedes Werkzeug, das\neines der beiden versioniert, ist für das andere blind. Dein Builder kann keine\nTabelle zurückholen, und deine Datenbank kann keine kaputte Seite zurückholen.",[25,52,54],{"id":53},"was-beim-zurücksetzen-tatsächlich-passiert","Was beim Zurücksetzen tatsächlich passiert",[10,56,57],{},"Deine Bildschirme gehen zurück auf ihren alten Stand. Deine Daten bewegen sich\nüberhaupt nicht.",[59,60,61,74],"table",{},[62,63,64],"thead",{},[65,66,67,71],"tr",{},[68,69,70],"th",{},"Was",[68,72,73],{},"Beim Zurücksetzen des Codes",[75,76,77,86,93,105,115,125],"tbody",{},[65,78,79,83],{},[80,81,82],"td",{},"Seiten, Komponenten, Gestaltung",[80,84,85],{},"Wiederhergestellt",[65,87,88,91],{},[80,89,90],{},"Die Logik deiner App und ihre Fixes",[80,92,85],{},[65,94,95,98],{},[80,96,97],{},"Eine gelöschte Tabelle",[80,99,100],{},[101,102,104],"key-verdict",{"type":103},"danger","Bleibt gelöscht",[65,106,107,110],{},[80,108,109],{},"Von einem Skript überschriebene Zeilen",[80,111,112],{},[101,113,114],{"type":103},"Bleibt überschrieben",[65,116,117,120],{},[80,118,119],{},"Eine von einer Migration entfernte Spalte",[80,121,122],{},[101,123,124],{"type":103},"Bleibt entfernt",[65,126,127,130],{},[80,128,129],{},"Von Nutzern hochgeladene Dateien",[80,131,132],{},"So oder so unberührt",[134,135],"diagram",{"alt":136,"caption":137,"src":138},"Drei Schritte nebeneinander. Zuerst Code in Fassung fünf mit sechs Datenzeilen, mit Häkchen. Dann derselbe Code, alle sechs Zeilen weg, mit Kreuz. Dann der Code zurück auf Fassung drei und mit Häkchen, die sechs Zeilen weiterhin weg und weiterhin mit Kreuz.","Das Zurücksetzen landet auf dem Code und sonst nirgends. Die Pläne auf Fassung drei zurückzudrehen legt die Zeilen nicht zurück.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Frollback-timeline-1600x680.png",[10,140,141],{},"Die Zeile mit der Migration überrascht Leute am meisten. Eine Migration, die du\ngegen deine Datenbank laufen ließest, ist bereits passiert; sie lebt in der\nDatenbank, nicht in deinem Repository, und die Datei zurückzunehmen, die sie\nbeschrieb, ändert daran nichts.",[25,143,145],{"id":144},"wo-das-wirklich-zubeißt","Wo das wirklich zubeißt",[10,147,148],{},"In den zehn Minuten nach einem Fehler, wenn du das Rückgängig suchst und\nmerkst, dass es keines gibt.",[10,150,151],{},"Die Formen, die es annimmt, sind ganz gewöhnlich:",[153,154,155,159,162,165],"ul",{},[156,157,158],"li",{},"Ein Löschen im Supabase-Tabelleneditor, das mehr Zeilen traf als gemeint.",[156,160,161],{},"Eine KI-gestützte Migration, die eine Spalte entfernte, damit ein Typfehler\nverschwindet.",[156,163,164],{},"Ein Seed- oder Reset-Skript, das auf das Live-Projekt statt auf ein Testprojekt\nzeigte.",[156,166,167],{},"Ein Aufräumen von scheinbaren Testdaten, die das echte Konto von jemandem\nwaren.",[10,169,170],{},"Nichts davon rührt eine einzige Zeile deines Codes an. Jedes davon übersteht ein\nZurücksetzen völlig unversehrt, und deshalb fühlt sich das Zurücksetzen an, als\nhätte es nichts getan. Es hat genau das getan, was es tut.",[25,172,174],{"id":173},"wofür-der-versionsverlauf-wirklich-gut-ist","Wofür der Versionsverlauf wirklich gut ist",[10,176,177],{},"Für eine ganze Menge, und das gehört klar gesagt, denn die Antwort ist nicht\n„nichts\".",[10,179,180],{},"Er ist ein echtes Rückgängig für echte Probleme: eine Gestaltungsänderung, die\ndu bereust, ein Deploy, das eine Seite zerlegt hat, eine KI-Änderung, die einen\nfunktionierenden Bildschirm schlechter geschrieben hat, eine Funktion, die die\nApp am Ende schwerer bedienbar machte. All das liegt in deinem Code, und dafür\nfunktioniert er genau wie versprochen.",[10,182,183],{},"Das Problem ist die stille Annahme, seine Aufgabe decke alles ab. Diese Annahme\ntrifft niemand mit Absicht; sie ist die, mit der man zurückbleibt, wenn einem\nniemand sagt, dass es zwei Systeme gibt.",[25,185,187],{"id":186},"wie-du-ein-echtes-rückgängig-für-deine-daten-bekommst","Wie du ein echtes Rückgängig für deine Daten bekommst",[10,189,190],{},"Du musst selbst eines hinlegen. Also eine Kopie der Datenbank, nach Zeitplan\ngezogen, aufbewahrt an einem Ort, den der Verlust des Kontos nicht mitnimmt.",[134,192],{"alt":193,"caption":194,"src":195},"Zwei Zeitleisten. Auf der Code-Zeitleiste führt ein Pfeil von ganz rechts von selbst zu einem früheren Punkt zurück. Auf der Datenbank-Zeitleiste schließt sich derselbe Pfeil nur, indem er durch eine gespeicherte Datei läuft.","Beide können zurück. Der Unterschied: Das Rückgängig deines Codes kam mit dem Builder, das deiner Daten existiert nur, wenn du die Kopie selbst dort hinlegst.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Ftwo-undo-paths-1600x600.png",[10,197,198,199,204],{},"Es gibt drei Wege dorthin, sie kosten unterschiedlich viel Geld und\nAufmerksamkeit, und jedem entgeht etwas, das die anderen abdecken.\n",[200,201,203],"a",{"href":202},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","Drei Wege, eine Supabase-Datenbank zu sichern","\ngeht alle drei durch, auch den, den die meisten zuerst anschalten sollten, und\nden Grund, warum er allein nicht reicht.",[10,206,207],{},"Genau dafür ist auch Reeve Care da: geplante Kopien deiner Supabase-Datenbank,\naußerhalb deines Supabase-Kontos aufbewahrt und geprüft, bevor sie als gemacht\nzählen. Verbinde deine Storage-Buckets, und die\nvon deinen Nutzern hochgeladenen Dateien fahren mit, sodass eine\nWiederherstellung die Zeilen zurückbringt und die Bilder, auf die sie zeigen.",[10,209,210,211,215],{},"Was eine solche Kopie enthält und was der Knopf tatsächlich tut, steht auf der\n",[200,212,214],{"href":213},"\u002Fsupabase-backups","Seite zu Supabase-Backups",".",[25,217,219],{"id":218},"was-du-diese-woche-tun-solltest","Was du diese Woche tun solltest",[221,222,223],"key-takeaways",{},[153,224,225,228,231,234,237],{},[156,226,227],{},"Finde heraus, ob deine Datenbank gerade überhaupt gesichert wird. Nicht dein Code. Deine Datenbank. Dauert die Antwort länger als eine Minute, lautet sie Nein.",[156,229,230],{},"Schalte das Backup an, das dein Supabase-Tarif enthält. Es schützt dich vor deinen eigenen Fehlern, und um diesen Fall geht es hier.",[156,232,233],{},"Halte zusätzlich eine Kopie anderswo, denn ein Backup im Konto hilft dir nicht, wenn du das Konto verlierst.",[156,235,236],{},"Sichere hochgeladene Dateien getrennt. Sie liegen weder in deinem Code noch in deiner Datenbank.",[156,238,239],{},"Spiel eine Kopie in ein Wegwerf-Projekt zurück, damit das erste Lesen dieser Datei nicht der Tag ist, an dem du sie brauchst.",[10,241,242,243,247,248,252],{},"Bevor du diesen Tab schließt: Öffne dein Supabase-Projekt und sieh nach, ob\nBackups an sind. Diese eine Prüfung ist die ganze Arbeit von heute. Die\n",[200,244,246],{"href":245},"\u002Fchecklist","10-Minuten-Sicherheitscheckliste"," deckt sie zusammen mit dem\nÜbrigen ab, was bei einer frisch gestarteten App zu bestätigen ist, und der\n",[200,249,251],{"href":250},"\u002Fis-your-supabase-app-safe","Supabase-Sicherheitsleitfaden"," geht durch, was\nsonst offen zu bleiben pflegt.",{"title":254,"searchDepth":255,"depth":255,"links":256},"",3,[257,259,260,261,262,263,264],{"id":27,"depth":258,"text":28},2,{"id":40,"depth":258,"text":41},{"id":53,"depth":258,"text":54},{"id":144,"depth":258,"text":145},{"id":173,"depth":258,"text":174},{"id":186,"depth":258,"text":187},{"id":218,"depth":258,"text":219},"Backups",null,"Lovable und Bolt führen einen Versionsverlauf für deinen Code. Deine Datenbank ist ein eigener Dienst, und ein Rücksprung holt deine Daten nicht zurück.",false,"md",[271,274,277,280],{"q":272,"a":273},"Ich habe versehentlich eine Tabelle gelöscht. Bekomme ich sie zurück?","Nur aus einem Backup, das vor dem Löschen entstanden ist. Finde also zuerst heraus, ob es eines gibt. Deinen Code zurückzusetzen schafft das nicht, und dein Builder auch nicht. Auf einem bezahlten Supabase-Tarif gibt es tägliche Backups und, falls hinzugebucht, die Wiederherstellung auf einen Zeitpunkt. Auf dem kostenlosen Tarif gibt es nichts Automatisches. Prüfe das, bevor du irgendetwas anderes änderst: Manche Wege zurück werden schwerer, sobald neue Daten über die Lücke geschrieben werden.",{"q":275,"a":276},"Sichert Lovable meine Supabase-Datenbank?","Dein Builder versioniert deine Projektdateien. Deine Datenbank ist ein eigener Dienst auf deinem eigenen Supabase-Konto, und nichts im Projektverlauf greift dort hinein. Builder bekommen neue Funktionen, also schau in die Dokumentation deines eigenen Builders, statt es in die eine oder andere Richtung anzunehmen. Geh aber von Nein aus, bis du dort Ja gelesen hast.",{"q":278,"a":279},"Ist mein Git-Verlauf ein Backup?","Nein, aus genau demselben Grund, aus dem der Versionsverlauf keines ist. Git verfolgt die Dateien, aus denen deine App gebaut wird. Es hat nie eine einzige Zeile deiner Daten gesehen und kann keine zurücklegen. Ein Repository und eine Datenbank sind zwei verschiedene Dinge, die beide „dein Projekt\" heißen.",{"q":281,"a":282},"Meine Daten sind alle noch da. Muss ich heute etwas tun?","Heute ist der billigste Tag, an dem du das je einrichten wirst, denn die Datenmenge ist klein und worauf es ankommt ist, dass die Gewohnheit existiert, bevor du sie brauchst. Die Verluste, die wehtun, sind selten dramatisch. Es ist ein vertippter Befehl bei einer nächtlichen Reparatur, in einem Projekt mit gerade genug echten Nutzern, dass Neuanfangen keine Option ist.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Fcard-800x500.png",[285,286,287,288,289],"lovable versionsverlauf","versionsverlauf datenbank backup","gelöschte supabase tabelle wiederherstellen","code zurücksetzen daten","daten wiederherstellen vibe coded app",{},true,"Der Versionsverlauf ist kein Datenbank-Backup","\u002Fblog\u002Fversion-history-is-not-a-backup","2026-08-10",{"title":5,"description":267},"blog\u002Fversion-history-is-not-a-backup",[298,299,300],"Der Versionsverlauf stellt deinen Code wieder her. Deine Datenbank rührt er nie an, und dort liegen deine Nutzer, ihre Inhalte und ihre Bestellungen.","Eine gelöschte Tabelle, eine überschriebene Zeile oder eine schiefe Migration überstehen einen Rücksprung also völlig unversehrt.","Dein Code hat ein eingebautes Rückgängig. Deine Daten haben nur eines, wenn du es dort hinlegst.","eXv_eUYAuaLU0AAq8KmwO-EF13ZrrgBDUDgoUvAjCDI",1787826048205]