Zum Inhalt springen

git revert

git revert

Beschreibung

Der git revert-Befehl ist eine „Rückgängigmach“-Operation. Im Gegensatz zu anderen Rückgängig-Befehlen überschreibt er nicht die Historie. Der git revert-Befehl macht die Änderungen, die durch den Commit eingeführt wurden, rückgängig und fügt einen neuen Commit mit dem umgekehrten Inhalt hinzu. Dadurch wird verhindert, dass Git die Historie verliert, was für die Integrität der Versionshistorie und eine reibungslose Zusammenarbeit unerlässlich ist. Revertieren wird verwendet, um den inversen Commit aus der Projekthistorie anzuwenden. Sie können git revert nutzen, um automatisch zurückzugehen und Korrekturen vorzunehmen.

Optionen

-e --editÖffnet den konfigurierten System-Editor und fordert Sie auf, die Commit-Nachricht vor dem Commit des Reverts zu bearbeiten. Standardoption.
--no-editVerhindert, dass der Revert-Editor geöffnet wird (das Gegenteil der -e-Option).
-n --no-commitFügt die inversen Änderungen zum Staging-Bereich und zum Arbeitsverzeichnis hinzu, anstatt einen neuen Commit zu erstellen.
-m <parent-number>Gibt für das Revertieren von Merge-Commits den Eltern-Commit an, gegen den reverted werden soll.

Beispiele

bash
# Stage the reverted changes without committing them (useful for review)
git revert -n HEAD

# Revert a merge commit against its first parent
git revert -m 1 <merge-commit-hash>

Funktionsweise

Wie git checkout und git reset nimmt auch git revert einen angegebenen Commit entgegen, verschiebt jedoch keine Referenzzeiger auf diesen Commit. Die Revert-Operation nimmt den angegebenen Commit entgegen, kehrt die Änderungen dieses Commits um und erstellt einen neuen Revert-Commit.

Hier ist ein Beispiel zur Erstellung eines Repositorys:

git revert-Befehl

bash
mkdir git_revert_example
cd git_revert_example/
git init .
#Initialized empty Git repository in /git_revert_example/.git/
touch w3docs_file
git add w3docs_file
git commit -m "original commit"
#[master (root-commit) 299b15f] original commit
#1 file changed, 0 insertions(+), 0 deletions(-)
#create mode 100644 w3docs_file
echo "original content" >> w3docs_file
git commit -m "add new content to w3docs_file"
#[master 3602d88] add new content to w3docs_file
#1 file changed, 1 insertion(+)
echo "prepended line content" >> w3docs_file
git commit -m "prepend content to w3docs file"
#[master 86bb32e] prepend content to w3docs file
#1 file changed, 1 insertion(+)
git log --oneline
#86bb32e prepend content to w3docs file
#3602d88 add new content to w3docs file
#299b15f original commit

In diesem Beispiel wird ein Repository in einem neu erstellten Verzeichnis namens git_revert_example initialisiert. Es gibt 3 Commits im Repository, in denen eine Datei namens w3docs_file hinzugefügt wird. Der Inhalt wurde zweimal geändert. Am Ende der Repository-Einrichtung verwenden wir git log, um alle 3 Commits in der Commit-Historie anzuzeigen. Nun können wir git revert aufrufen:

git revert

bash
git revert HEAD
#[master b9cd081] Revert "prepend content to w3docs file"
#1 file changed, 1 deletion(-)

git revert funktioniert nicht, ohne eine Commit-Referenz zu übergeben. Im gegebenen Beispiel wurde die HEAD-Referenz übergeben, um den letzten Commit rückgängig zu machen. Ein Revert erstellt einen neuen Commit, der den konfigurierten System-Editor öffnet, um eine neue Commit-Nachricht zu erstellen. Wir können git log verwenden und sehen, dass der neue Commit zum vorherigen Log hinzugefügt wurde:

git log --oneline

bash
git log --oneline
#2365e21 Revert "prepend content to w3docs_file"
#23ab21e prepend content to w3docs file
#3602d88 add new content to w3docs_file
#345b23f original commit

Nach dem Revert ist der 3. Commit weiterhin in der Projekthistorie enthalten. git revert hat einen neuen Commit hinzugefügt, um die Änderungen rückgängig zu machen, anstatt sie zu löschen.

Zurücksetzen vs. Revertieren

Der Befehl git revert macht nur einen einzelnen Commit rückgängig, während git reset durch Löschen nachfolgender Commits zu einem früheren Projektzustand zurückkehrt.

git revert

git revert1

Revertieren gilt als sichere Operation für Commits, die in ein gemeinsam genutztes Repository veröffentlicht wurden. Ein weiterer Vorteil des Revertierens ist das gezielte Ansprechen eines bestimmten Commits an einer beliebigen Stelle in der Historie. Vermeiden Sie die Verwendung von git revert für private oder unveröffentlichte Commits, bei denen git reset effizienter ist. Detaillierte Informationen zu git reset finden Sie auf unserer nächsten Seite.

Übungen

Welche Merkmale und Optionen hat der Befehl 'git revert'?

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.