Suche…


Wiederherstellen von einem verlorenen Commit

Falls Sie zu einem früheren Commit zurückgekehrt sind und ein neueres Commit verloren haben, können Sie das verlorene Commit durch Ausführen wiederherstellen

git reflog

Finden Sie dann Ihr verlorenes Commit und stellen Sie es wieder her

git reset HEAD --hard <sha1-of-commit>

Stellen Sie eine gelöschte Datei nach einem Commit wieder her

Falls Sie versehentlich einen Löschvorgang für eine Datei festgelegt haben und später feststellen, dass Sie ihn wieder benötigen.

Suchen Sie zuerst die Commit-ID des Commits, das Ihre Datei gelöscht hat.

git log --diff-filter=D --summary

Gibt Ihnen eine sortierte Zusammenfassung der Commits, die Dateien gelöscht haben.

Fahren Sie dann mit der Wiederherstellung der Datei fort

git checkout 81eeccf~1 <your-lost-file-name>

(Ersetzen Sie 81eeccf durch Ihre eigene Festschreibungs-ID.)

Wiederherstellen der Datei auf eine frühere Version

Um eine Datei auf eine frühere Version zurückzusetzen, können Sie reset .

git reset <sha1-of-commit> <file-name>

Wenn Sie bereits lokale Änderungen an der Datei vorgenommen haben (die Sie nicht benötigen!), --hard Sie auch die Option --hard

Einen gelöschten Zweig wiederherstellen

Um einen gelöschten Zweig wiederherzustellen, müssen Sie den Commit finden, der den Kopf Ihres gelöschten Zweigs war, indem Sie ihn ausführen

git reflog

Sie können den Zweig dann neu erstellen, indem Sie ihn ausführen

git checkout -b <branch-name> <sha1-of-commit>

Sie können gelöschte Verzweigungen nicht wiederherstellen, wenn gits Garbage Collector unvollständige Commits gelöscht hat - solche ohne Verweise. Halten Sie immer eine Sicherungskopie Ihres Repositorys bereit, insbesondere wenn Sie in einem kleinen Team / einem proprietären Projekt arbeiten

Wiederherstellen nach einem Reset

Mit Git können Sie die Uhr (fast) immer zurückdrehen

Haben Sie keine Angst davor, mit Befehlen zu experimentieren, die die Geschichte neu schreiben *. Standardmäßig löscht Git Ihre Commits nicht für 90 Tage, und während dieser Zeit können Sie sie problemlos aus dem Reflog wiederherstellen:

$ git reset @~3   # go back 3 commits
$ git reflog
c4f708b HEAD@{0}: reset: moving to @~3
2c52489 HEAD@{1}: commit: more changes
4a5246d HEAD@{2}: commit: make important changes
e8571e4 HEAD@{3}: commit: make some changes
... earlier commits ...
$ git reset 2c52489
... and you're back where you started

* Achten Sie auf Optionen wie - --hard und --force die jedoch Daten verwerfen können.
* Vermeiden Sie auch das Umschreiben des Verlaufs in allen Zweigen, in denen Sie zusammenarbeiten.

Erholen Sie sich von Git-Stash

Verwenden Sie, um den neuesten Stand nach dem Ausführen von Git-Stash zu erhalten

git stash apply

Um eine Liste Ihrer Vorräte anzuzeigen, verwenden Sie

git stash list

Sie erhalten eine Liste, die ungefähr so ​​aussieht

stash@{0}: WIP on master: 67a4e01 Merge tests into develop
stash@{1}: WIP on master: 70f0d95 Add user role to localStorage on user login

Wählen Sie einen anderen Git-Stash zum Wiederherstellen mit der Nummer, die für den gewünschten Stash angezeigt wird

git stash apply stash@{2}

Sie können auch "Git Stash Pop" wählen, es funktioniert genauso wie "Git Stash anwenden" wie ..

 git stash pop 

oder

 git stash pop stash@{2}

Unterschied im Git-Stash anwenden und Git-Stash-Pop ...

Git Stash Pop : - Stash-Daten werden aus dem Stapel der Stash-Liste entfernt.

Ex:-

git stash list

Sie erhalten eine Liste, die ungefähr so ​​aussieht

stash@{0}: WIP on master: 67a4e01 Merge tests into develop
stash@{1}: WIP on master: 70f0d95 Add user role to localStorage on user login

Pope jetzt die Daten mit dem Befehl

git stash pop

Überprüfen Sie erneut, ob eine Liste vorhanden ist

git stash list

Sie erhalten eine Liste, die ungefähr so ​​aussieht

 stash@{0}: WIP on master: 70f0d95 Add user role to localStorage on user login

Sie können sehen, dass ein Stash-Datenbestand aus der Stash-Liste entfernt (geknipst) wird und aus @ {1} Stash {@} wurde.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow