Hor - stock.adobe.com

Wie man Git-Code auf einen früheren Commit zurücksetzt

Fehler beim Programmieren passieren. Zum Glück haben Admins in Git zwei Optionen, um zu einem früheren Commit zurückzukehren. Erfahren Sie mehr über beide Möglichkeiten.

Mit Git können IT-Teams Versionskontrollen implementieren. Entwickler können Fehler machen und müssen daher auf frühere Versionen ihres Codes zurückgreifen.

Im Folgenden erfahren Sie, wie Sie Git-Commits auf eine bekannte, fehlerfreie Version zurücksetzen und welche Auswirkungen und potenziellen Komplikationen dies hat.

Was ist ein git reset?

Jedes Mal, wenn ein IT-Administrator eine Git-Deployment festschreibt, wird der letzte Commit zum Head (Kopf) des Codebaums – mit anderen Worten: zur aktuellen Version. Der Git-Commit-Prozess liefert zum Zeitpunkt jeder Änderung einen Point-in-Time Snapshot (PIT-Snapshot) der versionskontrollierten Dateien.

Ein Administrator kann das Code-Repository auf einen früheren Commit – diese Point-in-Time-Kopie – auf verschiedene Arten zurücksetzen, je nach Zielsetzung. Eine Möglichkeit ist der Befehl git reset.

Bevor Sie diesen Befehl verwenden, müssen Sie verstehen, was git reset bewirkt. Die Ergebnisse können je nach Verwendung des Befehls variieren. Verwenden Sie den Befehl also mit Bedacht. Es gibt zwei Modi für git reset:

  • Soft. In diesem Modus wird der Head des Codebaums auf die angegebene frühere Commit-Instanz zurückgesetzt. Alle Dateien zwischen diesem PIT-Snapshot und jetzt werden auf staged gesetzt – bereit zum Übertragen, aber noch nicht übertragen. Dies ist der Standardmodus.
  • Hard. Verwenden Sie diesen Modus mit äußerster Vorsicht. Diese Änderungen können nicht rückgängig gemacht werden. Dieser Befehl setzt alles zurück, verschiebt den Head zurück auf die angegebene Commit-Version und entfernt alle Änderungen, die dem Codebaum nach dieser bestimmten Versionsnummer hinzugefügt wurden. Im Endeffekt bewirkt der Befehl git reset eine harte Löschung aller Änderungen von jetzt – oder dem Zeitpunkt der Rückgängigmachung – bis zum angegebenen früheren Code-Commit. Er setzt den Codebaum auf die betreffende Version zurück und löscht nicht übertragene Dateien.

So machen Sie ein Git Commit rückgängig

Entscheiden Sie zunächst, wie weit Sie in der Versionshistorie zurückgehen wollen. Um die vorherigen Übertragungen anzuzeigen, verwenden Sie den Befehl git log --oneline. Dies liefert die Details der Übertragungen.

Sobald das IT-Team eine Codeversion ausgewählt hat, zu der ihr Baum zurückkehren soll, verwenden Sie die Commit-ID, um den Befehl auszuführen. Im folgenden Beispiel steht x12345 für die Commit-ID, die aus der git log-Ausgabe gewonnen wurde:

git reset x12345

Abbildung 1: Mehrere Commits hinzufügen und anschließend eine Version zurücksetzen.
Abbildung 1: Mehrere Commits hinzufügen und anschließend eine Version zurücksetzen.

Alternativ gibt es eine Kurzschriftmethode, um den Commit rückgängig zu machen: Um Commits rückgängig zu machen, ohne die nötige Commit-ID zu kennen, können Admins den folgenden Befehl verwenden, um Codeversionen relativ zur aktuellen Kopfposition rückgängig zu machen. Im Beispiel bezieht sich ~1 auf die Anzahl der Commits rückwärts, zu denen der Codebaum rückgängig gemacht werden soll. Abbildung 1 veranschaulicht die Ergebnisse für das Hinzufügen mehrerer Commits und das anschließende Zurücksetzen einer Version.

git reset head~1

Admins können auch git revert verwenden. Dieser Befehl macht die Auswirkungen einer schlechten oder falschen Übertragung rückgängig. Er erzeugt einen neuen Head ohne die Probleme des schlechten Commits, macht aber keine vorherige Arbeit rückgängig. Allerdings enthält diese Version die Historie des schlechten Commits. Diese Einbeziehung ist aber gewollt: Git möchte die Historie genau verfolgen, und das Löschen aktueller Heads würde massive Lücken in der Systemhistorie erzeugen.

Mit dem Experimentieren kommt die Erfahrung. Aber wie oben erwähnt, sollten Sie vorsichtig sein, um Dateiverluste zu vermeiden.

Fortsetzung des Inhalts unten

Erfahren Sie mehr über Softwareentwicklung

ComputerWeekly.de
Close