Ich bin kürzlich von SVN zu Git gewechselt und bin über etwas verwirrt. Ich musste die vorherige Version eines Skripts über einen Debugger ausführen, also tat git checkout <previous version hash>
und tat ich, was ich tun musste.
Jetzt möchte ich zur neuesten Version zurückkehren, aber ich kenne den Hash dafür nicht. Wenn ich tippe git log
, sehe ich es nicht.
Wie kann ich das machen? Gibt es auch eine einfachere Möglichkeit, Versionen zu ändern, als Hashes einzugeben - etwa "Zwei Versionen zurückgehen" oder "Zur chronologisch neuesten Version wechseln"?
quelle
git checkout master
Genau so wechsle ich von einem Zweig zurück. Bedeutet das also, dass ich beim Auschecken einer früheren Version im Wesentlichen einen Zweig erstelle?git log
, dass er relativ zu diesem Punkt angezeigt wird. Und wenn ich den Master auschecke, bewege ich den Zeiger auf die neueste Version des Master-Zweigs?git checkout
ist eine Möglichkeit, den KOPF zu bewegen. Wenn Sie HEAD abgenommen haben, haben Sie direkt auf das angegebene Commit hingewiesen. Wenn Sie den Master erneut auschecken, zeigt er zurück zum Master. (Und viele, viele Befehle wiegit log
nehmen tatsächlich einen Revisionsbereich, der standardmäßig HEAD ist.)Wenn Sie zu einem bestimmten Commit auschecken, erstellt git einen getrennten Zweig. Also, wenn Sie anrufen:
Sie werden so etwas sehen wie:
Um zum Hauptzweigkopf zurückzukehren, müssen Sie nur noch einmal zu Ihrem Hauptzweig auschecken:
Dieser Befehl löscht automatisch den getrennten Zweig.
Wenn
git checkout
dies nicht funktioniert, haben Sie wahrscheinlich Dateien geändert, die zwischen Zweigen in Konflikt stehen. Um zu verhindern, dass Sie Code Git verlieren, müssen Sie sich mit diesen Dateien befassen. Sie haben drei Möglichkeiten:Verstecken Sie Ihre Änderungen (Sie können sie später einfügen):
Verwerfen Sie die Änderungen, die den getrennten Zweig zurücksetzen:
Erstellen Sie einen neuen Zweig mit den vorherigen Änderungen und übernehmen Sie diese:
Danach können Sie zu Ihrem Hauptzweig zurückkehren (neueste Version):
quelle
Dies hat den Trick für mich getan (ich war immer noch in der Hauptniederlassung):
quelle
So kehren Sie zur neuesten Version zurück:
Zum Beispiel
git checkout master
odergit checkout dev
quelle
Sie können zum einen mithilfe von Filialnamen auschecken.
Ich weiß, dass es verschiedene Möglichkeiten gibt, den KOPF zu bewegen, aber ich überlasse es einem Git-Experten, sie aufzuzählen.
Ich wollte nur vorschlagen
gitk --all
- ich fand es enorm hilfreich, wenn ich mit git anfing.quelle
Ich fange gerade erst an, mich eingehender mit Git zu beschäftigen, bin mir also nicht sicher, ob ich es richtig verstehe, aber ich denke, die richtige Antwort auf die Frage des OP ist, dass Sie
git log --all
mit einer Formatspezifikation wie der folgenden arbeiten können :git log --all --pretty=format:'%h: %s %d'
. Dies markiert die aktuell ausgecheckte Version als(HEAD)
und Sie können einfach die nächste aus der Liste auswählen.Übrigens, fügen Sie Ihrem Alias einen solchen Alias
.gitconfig
mit einem etwas besseren Format hinzu, und Sie können Folgendes ausführengit hist --all
:In Bezug auf die relativen Versionen habe ich diesen Beitrag gefunden , aber es geht nur um ältere Versionen, es gibt wahrscheinlich nichts, was auf die neueren Versionen verweisen könnte.
quelle
Einige der Antworten hier setzen voraus, dass Sie sich in der Hauptniederlassung befinden, bevor Sie sich entschieden haben, ein älteres Commit auszuchecken. Dies ist nicht immer der Fall.
Weist Sie zurück auf den Zweig, in dem Sie zuvor waren (unabhängig davon, ob es sich um einen Master handelte oder nicht).
quelle
git checkout hash2
nachgit checkout hash1
,git checkout -
werden Sie zu unterstützenhash1
.Wenn Sie zu einer früheren Version zurückkehren,
Mit diesem Befehl können Sie Ihr Feature-Protokoll (Hash) auch in dieser Situation anzeigen.
master
kann durch einen anderen Filialnamen ersetzt werden.Wenn Sie es dann auschecken, können Sie zur Funktion zurückkehren.
quelle
Bei Git 2.23+ (August 2019) ist es am besten,
git switch
anstelle des verwirrendengit checkout
Befehls zu verwenden.So erstellen Sie einen neuen Zweig basierend auf einer älteren Version:
So kehren Sie zum aktuellen Hauptzweig zurück:
quelle
Eine elegantere und einfachere Lösung ist die Verwendung
Es kehrt zur am häufigsten gesendeten lokalen Version des Zweigs zurück und speichert auch Ihre Änderungen im Stash. Wenn Sie diese Aktion rückgängig machen möchten, gehen Sie wie folgt vor:
quelle