rh2010 - stock.adobe.com

Lokale Änderungen in einem Git-Arbeitsverzeichnis verwerfen

Git bietet mehrere Befehle, um lokale Änderungen in einem Arbeitsverzeichnis zu verwerfen. In diesem Tutorial stellen wir die drei Befehle vor und worauf man achten sollte.

Git bietet Ihnen mehrere Befehle, um lokale Änderungen in Ihrem Arbeitsverzeichnis zu verwerfen. Dazu gehören:

  • Der Befehl git stash, der nicht übertragene Änderungen speichert und Ihren Arbeitsbereich zurücksetzt.
  • Der Befehl git reset, der nur getrackte Dateien berührt.
  • Der Befehl git clean, mit dem alle nicht getrackten Dateien gelöscht werden.

Der Befehl git clean ist gefährlich und nicht wiederherstellbar. In den meisten Fällen muss ein Entwickler nur git stash oder git reset verwenden, um lokale Änderungen zu verwerfen und den Arbeitsbereich in den Zustand vor einer früheren Übertragung zurückzusetzen.

git stash anwenden, um Änderungen zu verwerfen

Der einfachste Weg, Ihr Arbeitsverzeichnis wiederherzustellen und alle lokalen Änderungen zu verwerfen, ist die Ausführung des Befehls git stash.

Dadurch werden nicht nur alle lokalen Änderungen verworfen, sondern es wird auch ein Datensatz Ihrer Änderungen gespeichert, der später mit dem Befehl pop oder apply abgerufen werden kann.

discard@changes:~/git-example$ git stash
Saved working directory and index state

Wenn Sie jedoch nicht möchten, dass Ihre Änderungen gespeichert werden, ist der Befehl git reset die bessere Wahl.

git reset und stash
Abbildung 1: Ein git reset und stash funktionieren bei getrackten Dateien, aber nicht bei nicht getrackten Dateien oder Dateien, die in einer .gitignore-Datei aufgeführt sind.

git reset anwenden, um nicht übertragene Änderungen zu löschen

Ein einfacher git reset-Befehl mit dem hard-Flag erfüllt folgende Aufgaben:

  • Alle getrackten Dateien werden auf den Zustand bei der letzten Übertragung zurückgesetzt.
  • Der Git-Index von allen bereitgestellten Dateien wird geleert.
  • Alle nicht getrackten oder ignorierten Dateien werden in Ruhe gelassen.

git reset hard zum Verwerfen von Änderungen

Um den Befehl git reset zu verwenden, um alle lokalen Änderungen zu verwerfen, geben Sie einfach den folgenden Befehl in ein Terminalfenster ein:

discard@changes:~/git-example$ git reset --hard
HEAD is now at ebbbca3 Discard local changes example

Wenn Sie den Befehl reset mit dem soft-Flag verwenden, werden Änderungen an getrackten Dateien nicht entfernt.

git reset
Abbildung 2: Der Befehl git reset verwirft alle Änderungen an getrackten Dateien und setzt auch den Index zurück.

git reset verwirft nicht alle lokalen Änderungen

Der Befehl git reset -hard macht nicht übertragene Änderungen an Dateien, die dem Index hinzugefügt wurden, rückgängig. Dazu gehören Dateien, die neu erstellt wurden, oder Dateien, die zuvor zum Index hinzugefügt und seit der letzten Übertragung bearbeitet wurden.

Alle neu erstellten Dateien im lokalen Git-Arbeitsbereich, die noch nicht zum Index hinzugefügt wurden, verbleiben jedoch nach dem Hard Reset im Projektordner.

git clean mit Vorsicht einsetzen

Um nicht getrackte Dateien zu entfernen, müssen Sie den Befehl git clean verwenden.

Dieser Befehl löscht jedoch alle nicht getrackten Dateien, unabhängig davon, ob sie kürzlich geändert wurden oder nicht.

Erfahren Sie mehr über Softwareentwicklung