Zurücksetzen und Wiederherstellen in Git

Abdul Jabbar 6 Februar 2022
  1. Git restore-Befehl
  2. Git reset-Befehl
  3. Unterschied zwischen git reset und git restore
Zurücksetzen und Wiederherstellen in Git

Git hat ein paar Befehle, die Dinge mit einzelnen Dateien machen, aber sie sind ziemlich selten. Diese Befehle sind git add, git rm, git mv, git checkout, git reset, git restore und ihre jeweiligen Gegensätze.

Git ist jedoch schlau; es merkt sich, wo wir die Arbeit haben, die wir geholt haben, damit es sie später von der nächsten fetch-Markierung wieder holen kann. Das bedeutet, dass wir ein Git-Repository haben können, das nur die Commits enthält, die wir lokal erstellt haben. Wenn wir dieselben Commits bereits aus einem anderen Repository abgerufen haben, kann Git vermeiden, sie erneut abzurufen.

Hier, in diesem Artikel, werden wir die zwei wichtigen Befehle von Git besprechen:

  1. git restore
  2. git reset

Git restore-Befehl

Der Git-Befehl restore wird verwendet, um Dateien im Arbeitsbaum aus dem Index oder einem anderen Commit wiederherzustellen. Dieser Befehl aktualisiert den aktuellen Zweig nicht. Es kann auch Dateien im Index von einem anderen Commit wiederherstellen. Es ist sehr nützlich, wenn wir den Code aus einem anderen Commit als dem Commit im aktuellen Zweig verwenden möchten. Der Befehl restore hilft dabei, nicht festgeschriebene lokale Änderungen im lokalen Zweig zu verwerfen.

Git restore kann in drei verschiedenen Situationen verwendet werden, je nach aktueller Situation, ob wir die Arbeit in der Arbeitskopie oder im Index oder in beiden wiederherstellen möchten.

git restore [--worktree] <file>

Der obige Befehl überschreibt <Datei> in unserer Arbeitskopie zusammen mit dem Inhalt in unserer Indexdatei. Oder wir können sagen, dass es unsere Änderungen in der Arbeitskopie rückgängig macht. Ob wir es spezifizieren, spielt keine Rolle, weil es suggeriert wird, wenn wir nichts anderes sagen.

git restore --staged <file>

Der obige Befehl überschreibt <file> in unserer Indexdatei mit dem aktuellen HEAD aus dem lokalen Repository. Oder wir können sagen, dass die nicht festgeschriebenen Änderungen kürzlich inszenierte Inhalte geändert haben. Es ist nicht falsch, wenn wir sagen, es ist tatsächlich gleichbedeutend mit dem alten git reset HEAD <file>.

git restore --staged --worktree --source HEAD <file>

Um sowohl, wie oben erwähnt, die Arbeitskopie als auch den Index mit dem vorhandenen HEAD zu überschreiben, verwenden wir den obigen Befehl. Diese Version wird in der Lage sein, beides zu tun: unsere Arbeitskopie auf HEAD zurückzusetzen und kürzlich inszenierte Arbeit aus dem aktuellen lokalen Zweig zu unstagieren.

Git reset-Befehl

Bei Git reset geht es darum, unseren Branch zu aktualisieren, den Tipp zu verschieben, um Commits aus dem Branch hinzuzufügen oder zu entfernen. Diese Operation ändert den Commit-Verlauf. Git reset wird verwendet, um den Index wiederherzustellen, was sich mit Git restore überschneidet. Wenn eine Datei geändert wird, entweder durch eine manuelle Bearbeitung oder durch eine Git-Hinzufügungsmethode, geht git reset nicht gut damit um.

Die Datei wird in den neuen Commit kopiert und dann im alten Commit als gelöscht markiert. Es gibt eine Warnung, dass die Datei anscheinend aus der Arbeitskopie entfernt wurde. Git reset verarbeitet auch Umbenennungen nicht gut. Es bedeutet nicht, eine Datei zu löschen und eine Datei mit demselben Namen hinzuzufügen, aber es tut es.

Der Befehl reset kann nicht verwendet werden, um Dateien in der Arbeitskopie zu verschieben. Die Dateien werden nicht nur in einen anderen Commit kopiert; sie werden aus der Arbeitskopie entfernt und als neue Dateien im Ziel-Commit wiederhergestellt. Wenn wir unerwünschte Änderungen an einer Datei vorgenommen haben, ist es nicht notwendig, die Datei zu löschen. Wir können alle Änderungen an einer Datei rückgängig machen, die Datei selbst wird jedoch nicht rückgängig gemacht.

Unterschied zwischen git reset und git restore

Der Befehl restore hilft uns, nicht festgeschriebene lokale Änderungen rückgängig zu machen oder zu verwerfen. Es kann zum Wiederherstellen von Dateien im Arbeitsbaum aus dem Index oder einem anderen Commit verwendet werden. Dieser Befehl aktualisiert unseren Zweig nicht. Es kann auch hilfreich sein, Dateien im Index von einem anderen Commit wiederherzustellen.

Git reset wird zum Aktualisieren des aktuellen Zweigs verwendet. Es kann auch hilfreich sein, den Index wiederherzustellen, der sich mit git restore überschneidet. Git reset wird zum Zurücksetzen des Index verwendet, um Änderungen im Arbeitsbaum zu verwerfen. Dieser Befehl wird unseren Zweig nicht aktualisieren. Es wird meistens mit der Option --soft verwendet, die nur den Index zurücksetzt und den Arbeitsbaum unverändert lässt. Es ist nützlich, wenn wir Änderungen inszeniert haben, die wir nicht verwerfen möchten.

Git reset wird erfolgreich abgeschlossen, wenn das Arbeitsverzeichnis sauber ist (es müssen keine Änderungen übernommen werden), während git restore fehlschlägt, wenn das Arbeitsverzeichnis sauber ist. Beide können den KOPF beeinflussen. git restore wirkt sich jedoch nur indirekt über den Staging-Bereich auf den HEAD aus. Git reset kann direkt mit dem Index und dem HEAD arbeiten. Beide können den KOPF beeinflussen. Git restore wirkt sich nur indirekt über den Staging-Bereich auf den Index und den HEAD aus.

Git reset kann nur verwendet werden, um das lokale Repository zu ändern, wenn wir noch nichts gepusht haben. Wenn wir auf den Remote-Server gepusht haben, ändert git-reset den Staging-Bereich und die Arbeitskopie, aber nicht das Repository. Es ist nützlich, wenn wir lokale Änderungen rückgängig machen, sie aber nicht erneut einführen möchten.

Git restore ist das Gegenteil, da es nur verwendet werden kann, um unser Repository zu ändern, nicht den Staging-Bereich oder die lokale Arbeitskopie. Es wirkt sich nicht auf Commits aus, die wir gepusht haben.

Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn

Verwandter Artikel - Git Reset

Verwandter Artikel - Git Restore