Zu einem früheren Commit in Github Desktop zurückkehren
Lesezeit: 8 Minuten
morishuz
Ich versuche, GitHub Desktop (dh die GUI-Anwendung – NICHT die Befehlszeile) zu verwenden, um zu einem vorherigen Commit (auf demselben Zweig) zurückzukehren. Etwas, von dem ich gedacht hätte, dass es ein Kernfeature ist, da es der Hauptgrund für die Verwendung der Quellcodeverwaltung überhaupt ist.
Ich kann sehen, dass es möglich ist, ein Commit rückgängig zu machen, aber das ist nicht wirklich das, was ich will, da es ein neues Commit erstellt. Ich möchte einfach nur zurückgehen mit der Option, wieder vorwärts zu gehen, genauso wie ich einfach zu einem anderen Zweig springen kann.
Ist das möglich oder ist es eine Einschränkung des Github-Desktops und ich muss dafür die cmd-Zeile verwenden?
es hängt davon ab, was Sie tun möchten. Wenn Sie lokal zurückkehren möchten, um beispielsweise einen neuen Zweig zu erstellen, können Sie wahrscheinlich einfach auf den Commit doppelklicken oder nach einer Option suchen, die “Auschecken” heißen sollte. Wenn Sie die Änderungen von diesem Commit abbrechen möchten, dann ist es der richtige Weg, es rückgängig zu machen, da Sie sonst den Verlauf ändern würden, was falsch ist.
– njzk2
14. Januar 2016 um 17:00 Uhr
Kann immer noch nicht in GitHub Desktop. Verwenden Sie „git checkout“ (oder das Äquivalent in SourceTree oder einer anderen GUI). Siehe stackoverflow.com/a/4114122/199364
Im Allgemeinen können Sie mit zu einem Commit in Ihrer Historie zurückkehren git reset.
Dies ist mit GitHub Desktop nicht möglich. GitHub Desktop ist eher ein Tool zum Synchronisieren Ihrer Repositories und kein vollwertiger GUI-Client.
Aber das bedeutet nicht, dass Sie die Befehlszeile verwenden müssen, da es Alternativen gibt. Sie können eine Liste finden hier. Um nur einige zu nennen (diese Unterstützung git reset):
So machen Sie es in der Befehlszeile. Die meisten Clients stellen dies in ihrer Benutzeroberfläche mit demselben Vokabular bereit (normalerweise können Sie ein Commit- und darauf zurücksetzen über Kontextmenü).
Mit kehren Sie zum vorherigen Commit zurück
git reset HEAD^
oder einige weitere Commits (zum Beispiel 3) von
git reset HEAD^3
oder zu einem bestimmten Commit von
git reset f7823ab
Denken Sie daran, dass standardmäßig die Option --mixed übergeben wird git reset. Alle Änderungen, die seit dem Commit vorgenommen wurden, auf das Sie zurückgesetzt haben, sind also immer noch vorhanden.
Um den ursprünglichen Zustand des Commits zu erhalten, den Sie „zurücksetzen“ möchten, müssen Sie bestehen --hard. Zum Beispiel:
git reset f7823ab --hard
ok danke, das ist definitiv nützlich, aber ich hatte gehofft, dies in GitHub Desktop tun zu können, dh mit der GUI
– morishuz
14. Januar 2016 um 15:20 Uhr
AFAIK GitHub Desktop ist eher ein Tool zum Synchronisieren Ihrer Repositories. Für Ihre Bedürfnisse würde ich vorschlagen, einen anderen GUI-Client wie z SchildkröteGit oder Quellbaum. Es gibt auch eine Liste von GUI-Clients hier. Sie haben normalerweise das gleiche Vokabular wie oben erwähnt.
– Sieben Elf
14. Januar 2016 um 17:11 Uhr
Ich verzichte stark darauf, GUI-Clients für alltägliche Git-Operationen zu verwenden. Ich lernte Git sehr schnell und entdeckte auch, dass einige GUI-Clients sinnlose Parameter zu Befehlen hinzufügen. Auch die Konsolenbefehle ändern sich auf keiner Plattform.
– J Durstberger
15. Januar 2016 um 11:27 Uhr
Gibt es überhaupt, dass ich nur anhand des Hash-Werts suchen und sehen kann? Ich finde keine Suchoption!
– mfaani
29. September 2016 um 19:38 Uhr
Verwenden Sie „git checkout“ anstelle von „git reset“, wenn Sie einfach einen früheren Zustand untersuchen möchten, aber letztendlich zum neuesten Commit-Knoten zurückkehren möchten. Siehe stackoverflow.com/a/4114122/199364
– WerkzeugmacherSteve
5. September 2018 um 18:57 Uhr
Wenn Sie einen Commit haben, den Sie nicht gepusht haben, können Sie den Commit ganz einfach rückgängig machen. Die Schaltfläche “Rückgängig” wird angezeigt, wenn Sie eine solche Zusage haben. Es entfernt den Commit aus dem Verlauf des Zweigs und platziert die Dateien zurück in den Bereich „Änderungen“.
Dies ist ein Kommentar zur Antwort von @SevenEleven. Vor der Verwendung sollte ein starker Vorbehalt gegeben werden git reset. git reset ist ein destruktiver Befehl, der Änderungen nach dem Ziel-Commit löscht (Commit-Hash beim Ausführen git reset [commit hash] oder das letzte Commit beim Ausführen git reset).
Wenn ich die Frage richtig verstanden habe, git reset verstößt gegen das, was in der ursprünglichen Frage verlangt wird, wie zitiert: “Ich möchte einfach nur zurückgehen mit der Option, wieder vorwärts zu gehen”.
git checkout ist der geeignetere Befehl für dieses Szenario, da er es ermöglicht, einen früheren Commit zu beobachten und zu verzweigen, während alle Änderungen und der Verlauf intakt bleiben.
nach dem Auftritt git checkout [older-commit-hash]können Sie wieder vorwärts gehen, indem Sie den Befehl ausführen git checkout [newer-commit-hash] oder git checkout [branch-name]
Für eine nette Erklärung des Unterschieds zwischen git checkout/reset/revert können Sie sich diese Ressource ansehen (kein Wortspiel beabsichtigt):
Wenn Sie versehentlich a git reset und Ihre Änderungen wiederherstellen möchten, können Sie sich auf diesen Stack Overflow-Thread beziehen:
Von Git-Reset wiederherstellen – schwer?
Ich habe in Git Desktop eine Lösung gefunden, die für mich funktioniert hat, ohne die Befehlszeile verwenden zu müssen.
Gehen Sie zum Verlauf, klicken Sie mit der rechten Maustaste auf das Commit, zu dem Sie zurückkehren möchten, und klicken Sie darauf “Zweig aus Commit erstellen”
Hat mir geholfen, einige Daten wiederherzustellen, die ich bei einem neueren Commit verloren habe. Ich habe den Zweig danach einfach gelöscht und bin zum Hauptzweig zurückgekehrt.
Alex Albacht
(EDIT: Github Desktop fehlt der angeforderte Befehl; unten finden Sie Anweisungen für eine etwas andere Aktion, die Sie möglicherweise nützlich finden.)
1. Click History.
2. In the commit history list, click the commit you'd like to revert.
3. Right-click the commit and click Revert This Commit.
Das Zurücksetzen eines Commits und das Zurücksetzen auf ein bestimmtes Commit bewirkt zwei sehr unterschiedliche Dinge: Das Zurücksetzen setzt den HEAD auf einen älteren Commit zurück und entfernt dadurch die neueren Commits. Durch das Zurücksetzen wird ein neuer Commit erstellt, der das Gegenteil des betreffenden Commits bewirkt.
– Benjamin Hammer Nørgaard
29. August 2018 um 11:51 Uhr
Wie Benjamin erklärt, ist dies KEINE Antwort auf die gestellte Frage. Ich habe die Antwort bearbeitet, um das klar zu machen. Konkret geht es um “roll back”: Rückkehr zu einem früheren Zeitpunkt in der Geschichte. Das würde bedeuten, die Aktionen ALLER Commits rückgängig zu machen, die neuer sind als der gewünschte. In dieser Antwort geht es darum, die Änderungen von einem einzelnen Commit rückgängig zu machen.
– WerkzeugmacherSteve
5. September 2018 um 18:29 Uhr
Vielen Dank für Ihre Antwort, aber sie ist destruktiv und beantwortet die Frage NICHT. Im besten Interesse der Community sollten Sie diese Antwort löschen.
– Rinogo
19. Juni 2019 um 5:32 Uhr
Diese Antwort funktioniert immer noch für mich, Sie sollten diese Antwort nicht löschen, aber Sie sollten sie ändern, um deutlicher zu machen, dass die Commits immer noch da sein werden, und angeben, dass Sie noch einige Änderungen vorgenommen und sie zurückgesetzt haben. Dies ist der bevorzugte Weg, damit jeder sehen kann, was hier wirklich passiert ist, da Sie die Änderungshistorie nicht zerstören oder verbergen. Dieser Link enthält einige offizielle Screenshots help.github.com/en/desktop/beitragen-zu-projekten/…
– José Serodio
10. April 2020 um 11:41 Uhr
Das Zurücksetzen eines Commits und das Zurücksetzen auf ein bestimmtes Commit bewirkt zwei sehr unterschiedliche Dinge: Das Zurücksetzen setzt den HEAD auf einen älteren Commit zurück und entfernt dadurch die neueren Commits. Durch das Zurücksetzen wird ein neuer Commit erstellt, der das Gegenteil des betreffenden Commits bewirkt.
– Benjamin Hammer Nørgaard
29. August 2018 um 11:51 Uhr
Wie Benjamin erklärt, ist dies KEINE Antwort auf die gestellte Frage. Ich habe die Antwort bearbeitet, um das klar zu machen. Konkret geht es um “roll back”: Rückkehr zu einem früheren Zeitpunkt in der Geschichte. Das würde bedeuten, die Aktionen ALLER Commits rückgängig zu machen, die neuer sind als der gewünschte. In dieser Antwort geht es darum, die Änderungen von einem einzelnen Commit rückgängig zu machen.
– WerkzeugmacherSteve
5. September 2018 um 18:29 Uhr
Vielen Dank für Ihre Antwort, aber sie ist destruktiv und beantwortet die Frage NICHT. Im besten Interesse der Community sollten Sie diese Antwort löschen.
– Rinogo
19. Juni 2019 um 5:32 Uhr
Diese Antwort funktioniert immer noch für mich, Sie sollten diese Antwort nicht löschen, aber Sie sollten sie ändern, um deutlicher zu machen, dass die Commits immer noch da sein werden, und angeben, dass Sie noch einige Änderungen vorgenommen und sie zurückgesetzt haben. Dies ist der bevorzugte Weg, damit jeder sehen kann, was hier wirklich passiert ist, da Sie die Änderungshistorie nicht zerstören oder verbergen. Dieser Link enthält einige offizielle Screenshots help.github.com/en/desktop/beitragen-zu-projekten/…
– José Serodio
10. April 2020 um 11:41 Uhr
13107200cookie-checkZu einem früheren Commit in Github Desktop zurückkehrenyes
es hängt davon ab, was Sie tun möchten. Wenn Sie lokal zurückkehren möchten, um beispielsweise einen neuen Zweig zu erstellen, können Sie wahrscheinlich einfach auf den Commit doppelklicken oder nach einer Option suchen, die “Auschecken” heißen sollte. Wenn Sie die Änderungen von diesem Commit abbrechen möchten, dann ist es der richtige Weg, es rückgängig zu machen, da Sie sonst den Verlauf ändern würden, was falsch ist.
– njzk2
14. Januar 2016 um 17:00 Uhr
Kann immer noch nicht in GitHub Desktop. Verwenden Sie „git checkout“ (oder das Äquivalent in SourceTree oder einer anderen GUI). Siehe stackoverflow.com/a/4114122/199364
– WerkzeugmacherSteve
5. September 2018 um 18:58 Uhr
immer noch nicht möglich: github.com/desktop/desktop/issues/10858
– mb21
24. Januar 2021 um 17:20 Uhr
Jetzt möglich: github.com/desktop/desktop/pull/12160
– Jon
26. Juni um 15:23 Uhr