Der Unterschied zwischen Git Reset, Git Checkout und Git Revert ⋆ ALexHost SRL

Testen Sie Ihre Fähigkeiten mit unseren Hosting-Diensten und erhalten Sie 15% Rabatt!

Code an der Kasse verwenden:

Skills
17.01.2025

Der Unterschied zwischen Git Reset, Git Checkout und Git Revert

Eine effiziente Versionskontrolle ist für jedes Entwicklungsprojekt unerlässlich, und die richtige Infrastruktur kann Ihren Arbeitsablauf erheblich verbessern. AlexHost bietet leistungsstarke und skalierbare VPS-Hosting-Lösungen, die sich ideal für das Hosting Ihrer Git-Repositories eignen und ein reibungsloses Projektmanagement gewährleisten. Mit dedizierten IPv4-Adressen, schnellem NVMe-Speicher und einem benutzerfreundlichen Control Panel bietet AlexHost die perfekte Umgebung für die Ausführung von Git und anderen Entwicklungstools und bietet Ihnen die Leistung und Zuverlässigkeit, die Sie für eine reibungslose Zusammenarbeit benötigen.

Bei der Arbeit mit Git gibt es mehrere Befehle, mit denen Sie Änderungen rückgängig machen oder zwischen verschiedenen Zuständen Ihres Repositorys navigieren können. Drei der am häufigsten verwendeten Befehle für diesen Zweck sind git reset, git checkout und git revert. Obwohl sie sich auf den ersten Blick ähneln, erfüllt jeder von ihnen einen anderen Zweck und funktioniert auf unterschiedliche Weise.

Im Folgenden werden die Unterschiede zwischen “git reset”, “git checkout” und “git revert” im Detail erläutert:


1. git reset

git reset wird verwendet, um Übertragungen rückgängig zu machen oder Änderungen rückgängig zu machen, indem der HEAD-Zeiger des aktuellen Zweigs auf eine bestimmte Übertragung verschoben wird. Es ändert den Commit-Verlauf und kann sich auf Ihr Arbeitsverzeichnis, den Staging-Bereich oder beides auswirken, je nachdem, wie es verwendet wird.

Anwendungsfälle:

  • Rückgängigmachen der letzten Übertragungen.
  • Verschieben des HEAD-Zeigers zurück zu einem früheren Commit.
  • Rückgängigmachen von Dateien aus dem Staging-Bereich (unter Beibehaltung der Änderungen im Arbeitsverzeichnis).

Befehlssyntax:

git reset [–soft | –mixed | –hard]

Modi zurücksetzen:

  • –soft: Verschiebt den HEAD-Zeiger auf die angegebene Übergabe, behält aber die Änderungen sowohl im Staging-Bereich als auch im Arbeitsverzeichnis bei.
  • –mixed (Voreinstellung): Verschiebt den HEAD-Zeiger auf die angegebene Übertragung und setzt den Bereitstellungsbereich zurück, behält aber die Änderungen im Arbeitsverzeichnis bei.
  • –hard: Verschiebt den HEAD-Zeiger, setzt den Staging-Bereich zurück und verwirft alle Änderungen im Arbeitsverzeichnis.

Beispiel:

git reset –hard HEAD~1 # HEAD um einen Commit zurücksetzen und alle Änderungen verwerfen

Achtung: git reset –hard ist ein destruktiver Vorgang, da er Änderungen dauerhaft aus dem Arbeitsverzeichnis und dem Commit-Verlauf entfernt.


2. git checkout

git checkout wird verwendet, um zwischen Zweigen zu wechseln oder um einen bestimmten Commit oder eine Datei auszuchecken. Es ändert das Arbeitsverzeichnis so, dass es dem Zustand des Zweigs, der Übergabe oder der Datei entspricht, die Sie auschecken, aber es ändert nicht den Übergabeverlauf, es sei denn, Sie erstellen eine neue Übergabe, nachdem Sie den Zweig gewechselt haben.

Anwendungsfälle:

  • Wechseln zwischen Zweigen.
  • Auschecken eines früheren Commits oder bestimmter Dateien, ohne die Commit-Historie zu verändern.
  • Erstellen eines neuen Zweigs.

Befehlssyntax:

git checkout # Zu einem anderen Zweig wechseln git checkout # Eine bestimmte Übergabe in einem abgetrennten HEAD-Zustand auschecken git checkout — # Eine bestimmte Datei in den zuletzt übergebenen Zustand zurückversetzen

Beispiel:

git checkout feature-branch # Zu ‘feature-branch’ wechseln git checkout 123abc # Commit mit Hash 123abc auschecken (abgetrennter HEAD-Status) git checkout — file.txt # file.txt in den Zustand des letzten Commits zurückversetzen

Vorsicht! Wenn Sie einen bestimmten Commit (nicht einen Zweig) auschecken, begeben Sie sich in einen abgetrennten HEAD-Zustand, d. h. die Änderungen werden keinem Zweig zugeordnet, es sei denn, Sie erstellen von diesem Punkt an einen neuen Zweig.


3. git revert

git revert wird verwendet, um einen Commit rückgängig zu machen, indem ein neuer Commit erstellt wird, der die durch den ursprünglichen Commit eingeführten Änderungen rückgängig macht. Die Commit-Historie bleibt dabei erhalten, so dass es eine sichere Möglichkeit ist, Änderungen rückgängig zu machen, ohne die Historie zu überschreiben.

Anwendungsfälle:

  • Sicheres Rückgängigmachen von Commits, insbesondere in gemeinsamen oder entfernten Zweigen.
  • Rückgängigmachen bestimmter Commits unter Beibehaltung der Commit-Historie.
  • Rückgängigmachen von Änderungen in einer kollaborativen Umgebung.

Befehlssyntax:

git revert

Beispiel:

git revert HEAD # Den letzten Commit rückgängig machen und einen neuen Commit mit den umgekehrten Änderungen erstellen git revert # Einen bestimmten Commit rückgängig machen, indem ein neuer Commit erstellt wird, der seine Änderungen rückgängig macht

Wichtiger Hinweis: git revert löscht keine Historie oder Commits. Stattdessen wird ein neuer Commit erstellt, der die Änderungen des angegebenen Commits rückgängig macht. Damit ist git revert ein nicht-destruktiver Befehl, der einen vollständigen Änderungsverlauf beibehält.

Wann die einzelnen Befehle zu verwenden sind

  • Verwenden Sie git reset, wenn:
    • Sie eine kürzlich erfolgte Übergabe (oder mehrere Übergaben) in Ihrem lokalen Repository rückgängig machen müssen.
    • Sie möchten Dateien zurücksetzen oder Änderungen in Ihrem Arbeitsverzeichnis rückgängig machen.
    • Sie an einem lokalen Zweig arbeiten und den Commit-Verlauf nicht aufbewahren müssen.
  • Verwenden Sie git checkout, wenn:
    • Sie zwischen Zweigen wechseln müssen.
    • Sie wollen eine frühere Übertragung auschecken, ohne den Verlauf zu ändern (in einem abgetrennten HEAD-Zustand).
    • Sie müssen eine Datei oder einen Ordner in den vorherigen Zustand zurückversetzen, ohne den Rest Ihrer Änderungen zu beeinträchtigen.
  • Verwenden Sie git revert, wenn:
    • Sie müssen Änderungen rückgängig machen, die bereits in einen gemeinsamen oder entfernten Zweig übertragen wurden.
    • Sie einen Commit rückgängig machen wollen, aber den Verlauf beibehalten wollen.
    • Sie mit anderen zusammenarbeiten und einen klaren und genauen Commit-Verlauf beibehalten möchten.

Schlussfolgerung

Jeder dieser Git-Befehle – git reset, git checkout und git revert – hat seinen eigenen Zweck und Effekt. Um den Verlauf und die Änderungen Ihres Projekts effektiv zu verwalten, müssen Sie wissen, wann und wie Sie sie richtig einsetzen. Bei der Arbeit in einer kollaborativen Umgebung ist es oft sicherer, git revert zu verwenden, um Änderungen rückgängig zu machen, während git reset nützlich sein kann, um die lokale Historie zu bereinigen. git checkout hingegen ist der bevorzugte Befehl, um zwischen Zweigen zu wechseln oder durch verschiedene Commits zu navigieren, ohne die Historie des Repositorys zu verändern.

Testen Sie Ihre Fähigkeiten mit unseren Hosting-Diensten und erhalten Sie 15% Rabatt!

Code an der Kasse verwenden:

Skills