English ▾ Themen ▾ Neueste Version ▾ git-revert zuletzt aktualisiert in 2.50.0

NAME

git-revert - Bestehende Commits rückgängig machen

SYNOPSIS

git revert [--[no-]edit] [-n] [-m <parent-number>] [-s] [-S[<keyid>]] <commit>…​
git revert (--continue | --skip | --abort | --quit)

BESCHREIBUNG

Revertieren Sie die durch die jeweiligen Patches eingeführten Änderungen, indem Sie einen oder mehrere bestehende Commits angeben, und erstellen Sie neue Commits, die diese Revertierungen festhalten. Dies erfordert, dass Ihr Arbeitsverzeichnis sauber ist (keine Änderungen gegenüber dem HEAD-Commit).

Hinweis: git revert wird verwendet, um neue Commits zu erstellen, die die Auswirkung früherer Commits (oft nur eines fehlerhaften) aufheben. Wenn Sie alle unbestätigten Änderungen in Ihrem Arbeitsverzeichnis verwerfen möchten, sollten Sie git-reset[1], insbesondere die Option --hard, konsultieren. Wenn Sie bestimmte Dateien so extrahieren möchten, wie sie in einem anderen Commit waren, sollten Sie git-restore[1], insbesondere die Option --source, konsultieren. Seien Sie vorsichtig mit diesen Alternativen, da beide unbestätigte Änderungen in Ihrem Arbeitsverzeichnis verwerfen.

Siehe "Zurücksetzen, Wiederherstellen und Rückgängigmachen" in git[1] für die Unterschiede zwischen den drei Befehlen.

OPTIONEN

<commit>…​

Zu revertierende Commits. Eine vollständigere Liste der Möglichkeiten, Commit-Namen anzugeben, finden Sie in gitrevisions[7]. Es können auch Commit-Gruppen angegeben werden, standardmäßig erfolgt jedoch keine Traversierung. Sehen Sie git-rev-list[1] und seine Option --no-walk.

-e
--edit

Mit dieser Option lässt git revert die Commit-Nachricht bearbeiten, bevor der Revert-Commit erstellt wird. Dies ist das Standardverhalten, wenn der Befehl von einem Terminal aus ausgeführt wird.

-m <parent-number>
--mainline <parent-number>

Normalerweise können Sie einen Merge-Commit nicht revertieren, da Sie nicht wissen, welche Seite des Merges als Hauptlinie betrachtet werden soll. Diese Option gibt die Elternnummer (beginnend bei 1) der Hauptlinie an und ermöglicht es revert, die Änderung relativ zum angegebenen Elternteil rückgängig zu machen.

Das Revertieren eines Merge-Commits erklärt, dass Sie niemals die durch den Merge eingeführten Baumänderungen wünschen werden. Folglich werden spätere Merges nur Baumänderungen einbringen, die durch Commits eingeführt wurden, die keine Vorfahren des zuvor revertierten Merges sind. Dies ist möglicherweise nicht das, was Sie wollen.

Weitere Details finden Sie im How-To: Revertieren eines fehlerhaften Merges.

--no-edit

Mit dieser Option startet git revert den Commit-Nachrichten-Editor nicht.

--cleanup=<mode>

Diese Option bestimmt, wie die Commit-Nachricht bereinigt wird, bevor sie an die Commit-Maschine übergeben wird. Weitere Details finden Sie in git-commit[1]. Insbesondere, wenn dem <mode> der Wert scissors zugewiesen wird, werden Scheren an MERGE_MSG angehängt, bevor sie im Falle eines Konflikts übergeben werden.

-n
--no-commit

Normalerweise erstellt der Befehl automatisch einige Commits mit Commit-Log-Nachrichten, die angeben, welche Commits revertiert wurden. Dieses Flag wendet die notwendigen Änderungen, um die benannten Commits rückgängig zu machen, auf Ihr Arbeitsverzeichnis und den Index an, erstellt aber keine Commits. Außerdem muss Ihr Index nicht mit dem HEAD-Commit übereinstimmen, wenn diese Option verwendet wird. Die Revertierung erfolgt gegen den Anfangszustand Ihres Index.

Dies ist nützlich, wenn Sie die Auswirkungen von mehr als einem Commit in Folge auf Ihren Index revertieren.

-S[<keyid>]
--gpg-sign[=<keyid>]
--no-gpg-sign

GPG-sign Commits. Das Argument keyid ist optional und standardmäßig die Committer-Identität; wenn es angegeben wird, muss es ohne Leerzeichen an die Option angehängt werden. --no-gpg-sign ist nützlich, um sowohl die Konfigurationsvariable commit.gpgSign als auch einen früheren Befehl --gpg-sign zu überschreiben.

-s
--signoff

Fügt am Ende der Commit-Nachricht einen Signed-off-by-Trailer hinzu. Weitere Informationen finden Sie in der Option signoff in git-commit[1].

--strategy=<strategy>

Verwendet die angegebene Merge-Strategie. Sollte nur einmal verwendet werden. Details finden Sie im Abschnitt MERGE STRATEGIES in git-merge[1].

-X<option>
--strategy-option=<option>

Übergibt die strategie-spezifische Merge-Option an die Merge-Strategie. Details finden Sie in git-merge[1].

--rerere-autoupdate
--no-rerere-autoupdate

Nachdem der rerere-Mechanismus eine aufgezeichnete Auflösung für den aktuellen Konflikt wiederverwendet hat, um die Dateien im Arbeitsbaum zu aktualisieren, erlauben Sie ihm auch, den Index mit dem Ergebnis der Auflösung zu aktualisieren. --no-rerere-autoupdate ist eine gute Möglichkeit, zu überprüfen, was rerere getan hat, und potenzielle Fehlmerges zu erkennen, bevor das Ergebnis mit einem separaten git add in den Index übernommen wird.

--reference

Anstatt den Hauptteil der Log-Nachricht mit "This reverts <full-object-name-of-the-commit-being-reverted>." zu beginnen, verweisen Sie auf den Commit im Format "--pretty=reference" (vgl. git-log[1]). Die Konfigurationsvariable revert.reference kann verwendet werden, um diese Option standardmäßig zu aktivieren.

SEQUENCER SUBCOMMANDS

--continue

Setzt die laufende Operation mit den Informationen in .git/sequencer fort. Kann verwendet werden, um nach der Auflösung von Konflikten bei einem fehlgeschlagenen Cherry-Pick oder Revert fortzufahren.

--skip

Überspringt den aktuellen Commit und fährt mit dem Rest der Sequenz fort.

--quit

Vergisst die aktuelle laufende Operation. Kann verwendet werden, um den Sequenzerzustand nach einem fehlgeschlagenen Cherry-Pick oder Revert zu löschen.

--abort

Bricht die Operation ab und kehrt zum Zustand vor der Sequenz zurück.

BEISPIELE

git revert HEAD~3

Revertiert die Änderungen, die durch den viertletzten Commit in HEAD angegeben sind, und erstellt einen neuen Commit mit den revertierten Änderungen.

git revert -n master~5..master~2

Revertiert die Änderungen, die durch die Commits vom fünftletzten Commit in master (einschließlich) bis zum drittletzten Commit in master (einschließlich) vorgenommen wurden, erstellt aber keine Commits mit den revertierten Änderungen. Die Revertierung modifiziert nur das Arbeitsverzeichnis und den Index.

DISKUSSION

Obwohl Git automatisch eine grundlegende Commit-Nachricht erstellt, wird dringend empfohlen, zu erklären, warum der ursprüngliche Commit revertiert wird. Darüber hinaus führen wiederholte Revertierungen zu immer unhandlicheren Betreffzeilen, z. B. Reapply "Reapply "<original-subject>"". Bitte erwägen Sie, diese zu kürzeren und eindeutigeren zu ändern.

KONFIGURATION

Alles unterhalb dieser Zeile in diesem Abschnitt wird selektiv aus der git-config[1]-Dokumentation übernommen. Der Inhalt ist derselbe wie dort zu finden.

revert.reference

Wenn diese Variable auf true gesetzt ist, verhält sich git revert so, als wäre die Option --reference angegeben worden.

SIEHE AUCH

GIT

Teil der git[1] Suite