Wie setze ich das Arbeitsverzeichnis auf einen älteren Commit?
Lesezeit: 3 Minuten
Dänisch
Um herauszufinden, an welchem Punkt ich ein Feature in meiner Software beschädigt habe, muss ich ältere Versionen meines Repositorys überprüfen. Ich möchte nur das Arbeitsverzeichnis auf einen älteren Commit setzen, mit dem Code spielen, danach die Änderungen verwerfen und dann einen anderen Commit versuchen.
Ich möchte nichts an Commits ändern, weder entfernen noch erstellen. Ich habe versucht, mit git reset aber danach wurden neuere Commits nicht mehr angezeigt. Also habe ich das Repository erneut heruntergeladen, weil ich nicht wusste, wie ich das rückgängig machen kann.
Finden Sie durch binäre Suche die Änderung, die einen Fehler eingeführt hat
Wenn Sie ein Skript haben, das testen kann, ob Ihr Arbeitsbaum “funktioniert” oder nicht, können Sie dieses Skript bei früheren Commits ausführen git bisectum den ersten Commit zu finden, der Ihren Test bricht.
Beachten Sie, dass dieser Befehl noch nicht direkt von GitHub für Windows unterstützt wird: Sie müssen eine Shell öffnen.
EIN git checkout würde Sie in einem abgetrennten HEAD belassen, was keine Rolle spielt, da Sie keine Änderungen vornehmen.
Um dorthin zurückzukehren, wo Sie waren, checken Sie eine Filiale aus:
git checkout master
Siehe “Warum hat Git meinen Kopf abgenommen?”.
Danke, dachte ich checkout ist nur für Filialen vor. Welche Art von Skript könnte ich verwenden? bisect? Meine Anwendung ist in nativem C++ geschrieben. Übrigens bin ich von Git beeindruckt, einen solchen Befehl aufzunehmen.
– Dänisch
14. Mai 2013 um 9:43 Uhr
@danijar nein, du kannst jedes Treeish auschecken. Zum Beispiel, git checkout "@{10 minutes ago}" würde Ihnen die Zusage von vor 10 Minuten geben.
– VonC
14. Mai 2013 um 9:45 Uhr
@danijar für git bisect, jedes gewünschte Skript, solange es mit dem Status 0 (funktioniert) oder 1 (fehlgeschlagen) beendet wird.
– VonC
14. Mai 2013 um 9:45 Uhr
ich benutzte checkout und Git sagte mir, ich befinde mich jetzt im Zustand “getrennter Kopf”. Was bedeutet das? Wie komme ich zurück zum neusten Commit?
– Dänisch
14. Mai 2013 um 9:56 Uhr
@danijar Ich habe die Antwort bearbeitet, um den Aspekt des abgetrennten Kopfes anzusprechen.
– VonC
14. Mai 2013 um 10:27 Uhr
Hand
Sie können den Code in einem anderen Zweig zum Index auschecken, indem Sie Folgendes verwenden:
git checkout my-other-branch .
Der Punkt ist ein Pfadbezeichner, der angibt, dass Sie dies für das gesamte Repository tun möchten. Sie könnten auch nur einen bestimmten Ordner angeben. Technisch gesehen können Sie jeden ‘baumartigen’ Bezeichner für angeben my-other-branch Parameter, wie ein Tag, ein Commit-Hash, so etwas wie HEAD~1ect … Wenn Sie möchten, dass diese Änderungen nicht bereitgestellt werden, können Sie Folgendes tun:
git reset HEAD
Angenommen, Sie haben in einem sauberen Zustand begonnen, befindet sich Ihr Arbeitsverzeichnis jetzt im selben Zustand wie my-other-branch.
Dieser hat bei mir funktioniert. Ohne Punktbezeichner wurden Dateien im Arbeitsverzeichnis nicht wiederhergestellt.
– dess
15. April 2021 um 15:59 Uhr
Verwenden git checkout <branch_name> Sie können in die andere verfügbare Filiale wechseln. Wenn Sie Ihre zurücksetzen möchten HEAD zum älteren Commit können Sie den folgenden Befehl ausprobieren:
git reset –hard HEAD~1 um den HEAD zurückzusetzen ein einziges Commit
git reset –hard HEAD~2 um den HEAD zurückzusetzen 2 Zusagen usw
Auch wenn Sie das Commit haben, können Sie diesen Befehl ausprobieren: git reset --hard <commit>
Auf diese Weise können Sie das Arbeitsverzeichnis auf ein älteres Commit setzen.
Um die Änderungen vollständig zu verwerfen, können Sie Folgendes versuchen: git reset --hard wodurch Ihr Verzeichnis auf den vorherigen Commit bereinigt wird.
11880200cookie-checkWie setze ich das Arbeitsverzeichnis auf einen älteren Commit?yes
Ich bin darauf gekommen, nachdem ich gegoogelt habe “Wechseln Sie das Arbeitsverzeichnis zu einem früheren Commit, aber lassen Sie head unverändert“. Am Ende habe ich verwendet
git checkout <earlier-commit-hash> -- <file-path>
für jede der Dateien wollte ich zum früheren Commit zurückkehren– Dummkopf
1. November 2016 um 15:53 Uhr