Rufen Sie den verlorenen HEAD-Zweig in Git ab

Lesezeit: 3 Minuten

Ich habe ein wirklich einfaches Git-Projekt mit nur einem Master-Zweig und keinen Ursprüngen.

Irgendwo auf der Linie habe ich versehentlich einen getrennten HEAD in meinem Projekt erstellt und dann, nachdem ich eine Reihe von Commits darauf vorgenommen hatte, getrennt HEADversuchte, es wieder in meine einzufügen Master Zweig. Ich tat dies in SourceTree, und zuerst schien die Zusammenführung zu funktionieren (das Diagramm zeigte, dass der Master in den Kopf ging, und es gab Zusammenführungskonflikte, die ich behoben hatte), aber dann doppelklickte ich auf Master zu diesem Zweig wechseln und dann plötzlich mein HEAD verschwunden. Ich kann es nirgendwo in SourceTree unter All Branches finden, und git branch und git log Auf der Befehlszeile zeige auch nur meinen Master-Zweig an.

Gibt es trotzdem eine Möglichkeit, meine Commits von meinem verlorenen Detached zurückzubekommen? HEAD?

Benutzer-Avatar
uns_david

Hier ist, was für mich funktioniert hat:

  1. Verwenden git reflog Befehl, um die verschwundene Kopfversion herauszufinden.
  2. Verwenden git checkout @{-1} KOPF zurück zu dem verschwundenen bewegen. Die Nummer -X ist, wie viele Commits die aus dem aktuellen Kopf verschwunden sind. -1 bedeutet, dass die verschwundene Version ist 1 Commit weg vom aktuellen HEAD.
  3. Erstellen Sie einen Zweig, um die verschwundene Version zu speichern

  • danke Mann, es hat funktioniert, aber ich musste Schritt 2 ändern, es hat irgendwie nicht richtig funktioniert … bei 2) können Sie den Commit-Hash verwenden git checkout 290f519

    – Emmanuel Mahuni

    1. November 2016 um 14:58 Uhr


  • das hat wunderbar funktioniert! (hat auch den obigen Kommentar für Schritt 2 eingefügt). Da gerietst du für einen Moment fast in Panik. Vielen Dank!

    – Hufeisen7

    21. Januar 2017 um 12:29 Uhr

  • Danke, du hast meinen Tag gerettet!

    – Jerome

    8. Januar 2018 um 14:26 Uhr

  • Vielen Dank! Hat mir auch den Tag gerettet!

    – Marcochiesi

    15. Januar 2018 um 9:00 Uhr

  • du hast mein Leben gerettet 🙂

    – Ahmet Karakaya

    19. Oktober 2018 um 11:21 Uhr

Benutzer-Avatar
VonC

Ich kann es nirgendwo in SourceTree finden

Gehen Sie zurück zur Befehlszeilenschnittstelle und führen Sie a Git-Relog.
Sie sollten den SHA1 Ihres HEAD in diesem Protokoll finden können.

Beachten Sie, dass Sie Ihren getrennten HEAD-Zweig nicht wieder mit dem Master „zusammenführen“ müssten.

Sie hätten den Master einfach auf Ihren aktuellen Detached HEAD-Commit zurücksetzen können.
Siehe „Wie repariert man einen abgelösten Git-Kopf?“

git checkout master

In reiner SourceTree-Manier (wie in diesem Thread)

http://edwon.tv/wordpress/wp-content/uploads/2012/09/Screen-Shot-2012-10-15-at-4.15.22-PM.png

Sie hätten auch einen vorhandenen Zweig auschecken können, dann mit der rechten Maustaste auf den neuesten Commit klicken und ihn auswählen Reset <branch> zu diesem Commit, um den Verzweigungszeiger dorthin zu verschieben, wo Sie ihn haben möchten.

Wann HEAD angezeigt wird, bedeutet dies, dass Sie sich auf einem getrennten HEAD befinden, was bedeutet, dass Sie keinen Branch ausgecheckt haben und dass Commits keine Branches verschieben, wenn sie durchgeführt werden. Wenn Sie einen abgetrennten HEAD in SourceTree auschecken, werden Sie ziemlich offensichtlich gewarnt, also wurde dies vielleicht vorher auf der Befehlszeile gemacht und Sie haben die Nachwirkungen in SourceTree gesehen.

Alternative:

Erstellen Sie einen Zweig von meinem “HEAD” branch (was eigentlich gar kein branch ist) mit dem neuen branch-Befehl. An diesem Punkt ist head weg.
Dann konnte ich diesen Zweig mit dem Master zusammenführen und den unerwünschten Zweig löschen, aus dem ich erstellt hatte HEAD.

  • Sehr umfassende Antwort. Vielen Dank!

    – MattD

    6. Juli 2016 um 6:19 Uhr

1257580cookie-checkRufen Sie den verlorenen HEAD-Zweig in Git ab

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy