GEC1
Begriff · zeitachse

Revert

Macht einen früheren Commit rückgängig. Git legt dazu einen neuen Commit an, der das Gegenteil enthält. Der Verlauf bleibt vollständig, auch der Fehler ist darin noch zu sehen.

Kurz

Ein Revert nimmt die Änderungen eines bestimmten Commits zurück. Dazu löscht Git nichts, sondern legt einen neuen Commit an, der genau das Gegenteil enthält. Im Verlauf steht danach beides: der Fehler und seine Rücknahme.

Das ist sicher, auch wenn der fehlerhafte Commit schon auf GitHub liegt.

Genauer

Drei Wege zurück, je nachdem, wie weit eine Änderung schon gekommen ist:

LageWerkzeug in GitHub DesktopWirkung
geändert, noch nicht committetDiscard changes (Rechtsklick auf die Datei)Änderung verworfen; GitHub Desktop legt sie in den Papierkorb
committet, noch nicht gepushtUndo commit (History, Rechtsklick)Commit aufgelöst, Änderungen wieder offen
committet und gepushtRevert Changes in Commit (History, Rechtsklick)neuer Commit mit dem Gegenteil

Ein Revert nimmt nur den einen Commit zurück. Ist danach weitergearbeitet worden, bleibt das Spätere erhalten. Haben spätere Commits dieselben Zeilen geändert, meldet Git einen Konflikt, der von Hand gelöst werden muss.

Vor dem Revert in Unity alles speichern. Nach dem Revert lädt Unity die geänderten Dateien neu; ist die Szene offen, fragt Unity, ob sie neu geladen werden soll.

Achtung, Namensgleichheit: Bei Prefabs gibt es in Unity ebenfalls Revert. Das setzt eine Instanz auf ihr Prefab zurück und hat mit Git nichts zu tun.

In GitHub Desktop sehen

  1. Reiter History öffnen.
  2. Rechtsklick auf den Commit, der rückgängig werden soll.
  3. Revert Changes in Commit wählen. Der neue Commit erscheint oben.
  4. Push origin, damit die Rücknahme auch auf GitHub ankommt.

Im Terminal: git revert 9f45bb9 (die Kennung des Commits).

Weiterlesen