Rollback in der Entwicklung: Was es ist, Methoden und wie es funktioniert

Autor: IT Sectr Veröffentlicht: 2026-07-30 Lesezeit: 7 Min.

„Rollback“ und „Rückgängig machen“ sind Begriffe, die bedeuten, ein System, Code oder Daten in einen vorherigen Zustand zurückzuversetzen. In der Entwicklung ist dies eine grundlegende Operation, die in Versionskontrollsysteme, Datenbanken und Bereitstellungsmechanismen integriert ist. Laut der Git-Dokumentation können Rollback-Operationen sicher (revert mit Erstellung eines neuen Commits) und destruktiv (reset mit Verlust des Verlaufs) sein. Das Verständnis der Unterschiede zwischen ihnen hilft, Datenverlust beim Zurückkehren zu einer früheren Version zu vermeiden.

Wichtige Punkte

  • Rollback — Code oder Daten auf eine vorherige stabile Version zurücksetzen
  • Git revert erstellt einen neuen Commit, der Änderungen rückgängig macht — eine sichere Rollback-Methode
  • Git reset verschiebt den Branch-Zeiger zurück und kann den Commit-Verlauf löschen
  • Rollback in DB bricht eine unvollständige Transaktion ab und stellt Daten wieder her
  • Die Wahl der Rollback-Methode hängt davon ab, ob Sie allein oder im Team arbeiten

Was ist Rollback in der Entwicklung

Rollback ist eine Operation, die ein System in einen vorherigen stabilen Zustand zurückversetzt. Im Kontext der Entwicklung kann dies bedeuten, einen Commit in Git rückgängig zu machen, eine Datenbanktransaktion zurückzusetzen oder zu einer früheren Version einer Anwendung auf dem Server zurückzukehren. Der Begriff stammt aus dem Englischen “Rollback“ und ist im Wortschatz der Entwickler aller Plattformen fest verankert.

Die Notwendigkeit eines Rollbacks entsteht, wenn eine neue Änderung die Funktionalität beeinträchtigt, Fehler verursacht oder die Qualitätsprüfung nicht besteht. In einem gut organisierten Entwicklungsprozess ist ein Rollback kein Zeichen von Misserfolg, sondern ein Standardverfahren, das in den Arbeitsablauf integriert ist. Je schneller ein Team eine problematische Änderung zurücksetzen kann, desto geringer ist die Auswirkung des Fehlers auf die Benutzer.

Verschiedene Werkzeuge bieten unterschiedliche Rollback-Mechanismen: Git bietet eine Wahl zwischen sicherem revert und destruktivem reset, Datenbanken unterstützen Transaktions-Rollback, und CI/CD-Systeme können den Datenverkehr zwischen Versionen umschalten. Die Wahl des Ansatzes hängt vom Kontext und den Anforderungen an die Erhaltung des Änderungsverlaufs ab.

Git revert vs git reset: Was ist der Unterschied

Git revert ist eine sichere Rollback-Methode, die einen neuen Commit erstellt, der vorherige Änderungen rückgängig macht. Der Verlauf bleibt linear, und alle alten Commits bleiben erhalten. Dies ist die einzig richtige Wahl zum Rückgängigmachen in einem gemeinsamen Branch, an dem mehrere Entwickler arbeiten. Git revert löscht keinen Verlauf — es fügt die Tatsache des Rollbacks als neue Änderung hinzu.

Git reset verschiebt den Zeiger des aktuellen Branches auf einen bestimmten Commit und verwirft alle nachfolgenden Änderungen. Abhängig vom Flag — soft, mixed oder hard — behandelt reset das Arbeitsverzeichnis und den Index unterschiedlich. Der hard-Modus entfernt Änderungen vollständig aus dem Verlauf, was ihn gefährlich für gemeinsame Branches und nur für lokale Arbeit geeignet macht.

Wann revert verwendet werden sollte

Revert wird in gemeinsamen Branches verwendet: main, develop, release. Es bewahrt den Verlauf und ermöglicht anderen Entwicklern zu verstehen, dass eine Änderung rückgängig gemacht wurde. Nach revert können Sie sicher git pull ausführen — das System erzeugt keine Konflikte in Bezug auf umgeschriebenen Verlauf. In der Teamarbeit ist revert der Standard.

bash
# Letzten Commit durch Erstellen eines neuen Commits rückgängig machen
git revert HEAD

# Einen bestimmten Commit per Hash rückgängig machen
git revert a1b2c3d

Wann reset verwendet werden sollte

Reset ist in einem lokalen Branch geeignet, in dem Sie noch keine Änderungen veröffentlicht haben. Wenn Sie experimentiert haben und den Verlauf vollständig bereinigen möchten — reset hard wird dies tun. In einem lokalen Branch können Sie reset mixed verwenden, um Commits rückgängig zu machen, aber die Änderungen im Arbeitsverzeichnis für einen erneuten Commit zu behalten.

bash
# Letzten Commit rückgängig machen, Änderungen im Arbeitsverzeichnis behalten
git reset HEAD~1

# Vollständig rückgängig machen — Änderungen werden dauerhaft entfernt
git reset --hard HEAD~2

Rollback in Datenbanken: Transaktionen und ACID

Transaktions-Rollback ist eine Operation, die alle Änderungen innerhalb der aktuellen Transaktion rückgängig macht und die Datenbank in den Zustand zu Beginn der Transaktion zurückversetzt. Dies garantiert die Atomarität — eines der vier ACID-Prinzipien (Atomicity, Consistency, Isolation, Durability). Wenn in irgendeiner Phase der Transaktion ein Fehler auftritt, wird ein Rollback ausgeführt und die Daten kehren in ihren ursprünglichen Zustand zurück.

Der Rollback-Mechanismus wird über das Write-Ahead-Log (WAL) implementiert. Bevor eine Datenseite geändert wird, schreibt das DBMS die alten und neuen Werte in das Log. Während des Rollbacks liest das System das Log und stellt die ursprünglichen Werte für alle geänderten Seiten wieder her. Dies stellt sicher, dass die Transaktion auch bei einem Stromausfall korrekt rückgängig gemacht werden kann.

sql
BEGIN TRANSACTION;

UPDATE accounts
SET balance = balance - 100
WHERE id = 1;

-- Rollback on error
ROLLBACK;

Savepoint: partielles Rollback

Bei langen Transaktionen ist es praktisch, Savepoints zu verwenden — Zwischenspeicherpunkte, zu denen Sie zurückkehren können, ohne die gesamte Transaktion abzuschließen. Dies ermöglicht die Behandlung von Fehlern innerhalb einer komplexen Operation, ohne den Fortschritt in anderen Teilen zu verlieren. Savepoints werden von den meisten relationalen DBMS unterstützt: PostgreSQL, MySQL, Oracle.

sql
SAVEPOINT sp1;

UPDATE orders SET status = 'cancelled'
WHERE id = 42;

ROLLBACK TO sp1;

Rollback bei der Bereitstellung: Strategien und Werkzeuge

Bereitstellungs-Rollback ist die Rückkehr einer laufenden Anwendung zu einer vorherigen Version nach einer fehlgeschlagenen Bereitstellung. Dies ist eine kritische Fähigkeit für Produktionsumgebungen: Die Wiederherstellungszeit (MTTR) wirkt sich direkt auf SLA und Benutzererfahrung aus. Moderne Plattformen bieten je nach Architektur und Verfügbarkeitsanforderungen mehrere Rollback-Strategien.

Blue-Green-Bereitstellung

Blue-Green ist eine Strategie, bei der zwei identische Umgebungen gleichzeitig laufen: blue (aktuelle Version) und green (neue Version). Der Datenverkehr wird nach erfolgreicher Bereitstellung auf green umgeschaltet. Wenn die neue Version nicht korrekt funktioniert, kehrt der Verkehrsschalter zu blue zurück. Das Rollback erfolgt sofort, ohne erneute Bereitstellung — Sie müssen nur das Routing ändern.

Canary-Release mit automatischem Rollback

Canary-Bereitstellung leitet einen kleinen Teil des Datenverkehrs an die neue Version und überwacht Metriken: Fehlerrate, Antwortzeit, Prozentsatz erfolgreicher Anfragen. Wenn sich die Metriken verschlechtern, führt das System automatisch ein Rollback des Canary durch und leitet den gesamten Datenverkehr an die stabile Version. Kubernetes und Service-Meshes (Istio, Linkerd) unterstützen diese Strategie standardmäßig.

yaml
apiVersion: apps/v1
kind: Deployment
spec:
  replicas: 10
  strategy:
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1

Praktische Beispiele für Rollback in der Entwicklung

Betrachten wir drei typische Szenarien, in denen ein Entwickler Änderungen rückgängig machen muss. Jedes Szenario erfordert seinen eigenen Ansatz — von einem einfachen Befehl im Terminal bis zu einem mehrstufigen Verfahren mit CI/CD.

Szenario 1: versehentlicher Commit in main

Sie haben versehentlich einen Commit mit einem Fehler in main gepusht. Ihre Aufgabe ist es, die Änderungen ohne Verlust des Verlaufs für das Team rückgängig zu machen. Verwenden Sie git revert, um einen rückgängig machenden Commit zu erstellen, und dann git push. Alle Teammitglieder sehen den Rollback und können konfliktfrei weiterarbeiten. Dies ist die sicherste und transparenteste Methode.

bash
git checkout main
git pull origin main
git revert HEAD
git push origin main

Szenario 2: fehlgeschlagene Datenbankmigration

Eine Datenbankmigration ist fehlgeschlagen und einige Daten sind beschädigt. Verwenden Sie Transaktions-Rollback im Migrationsskript und stellen Sie aus dem Backup für bereits angewendete Änderungen wieder her. In einem gut gestalteten System ist jede Migration in eine Transaktion eingebettet — bei einem Fehler führt das DBMS automatisch ein Rollback durch.

Szenario 3: Bereitstellung mit kritischem Fehler

Nach der Bereitstellung einer neuen Version stellen Sie fest, dass die Authentifizierung nicht funktioniert. Wenn Sie Blue-Green verwenden, ist das Rollback das Zurückschalten des Routers. Bei einem Rolling Update — der Befehl kubectl rollout undo kehrt zur vorherigen Version zurück. Idealerweise sollte der Rollback-Prozess automatisiert sein und nicht länger als eine Minute dauern.

Häufig gestellte Fragen

Was ist der Unterschied zwischen git revert und git reset?

Revert erstellt einen neuen Commit, der Änderungen rückgängig macht, und bewahrt den Verlauf. Reset verschiebt den Branch-Zeiger zurück und kann Commits löschen. Für gemeinsame Branches verwenden Sie nur revert.

Können Daten nach git reset --hard wiederhergestellt werden?

Wenn Commits nicht von der Git-Garbage-Collection erfasst wurden, können sie über git reflog wiederhergestellt werden. Nach der Garbage-Collection ist eine Wiederherstellung jedoch nicht mehr möglich. Verwenden Sie --hard nur in lokalen Branches.

Wie funktioniert Rollback in einer SQL-Transaktion?

Rollback macht alle Änderungen in der aktuellen Transaktion rückgängig, indem es das Write-Ahead-Log (WAL) verwendet. Das DBMS stellt die ursprünglichen Werte für alle geänderten Datenseiten wieder her.

Was ist ein Savepoint und wozu dient er?

Savepoint ist ein Zwischenspeicherpunkt innerhalb einer Transaktion. Er ermöglicht ein partielles Rollback zu diesem Punkt, ohne die gesamte Transaktion abzubrechen. Nützlich bei langen Operationen mit mehreren Schritten.

Wie automatisiert man Rollback in CI/CD?

Richten Sie Health Checks und Metriküberwachung nach der Bereitstellung ein. Wenn die Fehlerschwelle überschritten wird, lösen Sie ein automatisches Rollback über ein Skript oder ein Tool wie Spinnaker, ArgoCD oder GitLab Auto Rollback aus.

Zusammenfassung

  • Rollback — Code, Daten oder Anwendung auf eine vorherige stabile Version zurücksetzen
  • Git revert — sicheres Rollback für Teamarbeit mit Verlaufserhalt
  • Git reset — destruktives Rollback, nur für lokale Branches geeignet
  • Datenbank-Rollback basiert auf dem WAL-Log und garantiert Transaktionsatomarität
  • Savepoint ermöglicht partielles Rollback einer langen Transaktion
  • Blue-Green und Canary — Bereitstellungsstrategien mit sofortigem Rollback
  • Automatisieren Sie Rollbacks basierend auf Metriken, um die Wiederherstellungszeit zu minimieren

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch