Behält github gelöschte Remote Branches im Verlauf? Wenn ja, können diese wiederhergestellt werden?

Lesezeit: 4 Minuten

Ich habe mich gefragt, ob es eine Möglichkeit gibt, einen entfernt gelöschten Zweig in GitHub wiederherzustellen. Der Verlauf zeichnet den Zweig eindeutig auf und führt ihn mit anderen Zweigen zusammen, aber ich bin mir nicht sicher, ob es möglich ist, einen gelöschten Zweig wiederherzustellen.

Danke.

Behalt github geloschte Remote Branches im Verlauf Wenn ja konnen
Autobahn des Lebens

Ja, es ist möglich, einen gelöschten Zweig von git wiederherzustellen.

Finden Sie Ihre Commit-ID: Suchen Sie mithilfe von git reflog nach einem Branch

Wenn Sie den Zweig in den letzten 30 Tagen in Ihrem lokalen Git-Repo hatten, können Sie dies möglicherweise tun finden Sie es im Reflog mit folgendem:

git reflog

Suchen Sie im Reflog nach dem Zweignamen und notieren Sie sich die HEAD{x} Punkt oder die Commit-ID.

Erstellen Sie den Zweig vom Reflog-HEAD-Punkt neu:

git checkout -b branch_name HEAD@{27}

Erstellen Sie den Branch aus der Commit-ID neu:

Sie können die Commit-ID auschecken und einen Branch von diesem Commit-Punkt erstellen:

git checkout -b branch_name <commit id>

  • Dies löst nicht das Problem des OP. Alles, was Sie tun, ist, einen Umweg zu erklären, um herauszufinden, welches Commit Sie gerade ausgecheckt haben (ob es sich auf einem Zweig befindet oder nicht). Wenn die gelöschten Remote-Zweige nicht auf HEAD verweisen, ist dies nicht hilfreich. Sie könnten vielleicht weiter hinten in den Reflogs stehen, wenn Sie sie sich jedoch irgendwann ansehen.

    – Kaskabel

    13. Januar 2011 um 3:47 Uhr

  • @Jefromi, dies ist die Methode zum Wiederherstellen eines gelöschten Zweigs, egal ob er weiter hinten oder am Kopf liegt, Sie stellen ihn immer noch auf die gleiche Weise wieder her.

    – Autobahn des Lebens

    13. Januar 2011 um 19:33 Uhr

  • Es ist … irgendwie. Es ist etwas durcheinander. Sie wirklich verwenden möchten reflog gefolgt von git branch <branch-name> <commit>. (Dort fehlt ein Argument). Wenn Sie aus irgendeinem seltsamen Grund den ursprünglichen Zweig nicht wirklich zurückbekommen möchten, sondern einfach weitermachen und ihn in Ihr aktuelles Commit einbinden möchten, dann ja, das könnten Sie git checkout -b <branch-name>; git merge <commit>. Ich weiß aber nicht, warum das dein Standardvorschlag sein sollte.

    – Kaskabel

    13. Januar 2011 um 20:27 Uhr

  • Übersehe ich etwas?? Ich glaube nicht, dass diese Antwort die Frage “irgendwie” beantwortet. git reflog wird zeigen KOPF‘s Geschichte. Sie müssen das nach Vorkommen des Gelöschten suchen foo sich verzeigen. “HEAD@{0}” zu finden, hilft überhaupt nicht. Siehe meine Antwort unten.

    – Alexander Vogel

    10. April 2013 um 13:34 Uhr

  • @AlexanderBird, “Verpasse ich etwas?” Ja, bitte lesen Sie: gitolite.com/concepts/reflog.html

    – Autobahn des Lebens

    11. April 2013 um 3:51 Uhr

Behalt github geloschte Remote Branches im Verlauf Wenn ja konnen
VonC

Es ist möglich, nach GitHub-Support zu fragen und sie sich das ansehen zu lassen reflog Ihres Remote-Repos (wie zum Beispiel in diesem Thread).
Wenn dies nah genug ist (standardmäßig weniger als 30 Tage) ab dem Löschen, enthält das Reflog immer noch die Commits, die von keinem Zweig mehr referenziert werden.
Das Erstellen einer Verzweigung auf einem dieser Commits ermöglicht es, dass sie wieder zugänglich sind.

Weitere Informationen zum Reflog finden Sie unter “Was zum Teufel ist ein Reflog und warum ist es so wichtig?


Aktualisieren: Der Repo-Eigentümer kann auch die GitHub-EVents-API abfragen:
Siehe „Erinnert sich GitHub an Commit-IDs?“

Wenn der Branch sehr lange gelöscht wurde (in meinem Fall 1 Jahr), Sie aber einen Pull-Request für diesen Branch geöffnet hatten, können Sie ihn möglicherweise wiederbeleben, indem Sie im Pull-Request-Verlauf suchen.

Sobald ich die Pull-Anforderung für diesen Zweig gefunden hatte, konnte ich den Zweig wiederherstellen. Relevante Commit-Informationen usw. sind auch aus dem Pull-Request verfügbar.

  • Meine Zweiglöschung ist älter als 30 Tage – 8 Monate in der Tat, gibt es eine Möglichkeit, sie wiederherzustellen? Ich konnte wie erwartet nichts im Reflog finden und ich habe keine Pull-Anfrage dafür.

    – C.Dhruv

    29. Juni 2020 um 8:01 Uhr

git reflog zeigt Ihnen die Geschichte von HEAD. Wenn der von Ihnen gelöschte Zweig benannt wurde foodann sollten Sie in dieser Ausgabe Zeilen wie sehen 48534f5 HEAD@{0}: checkout: moving from master to foo oder 48534f5 HEAD@{1}: merge foo: Fast-forward. Sie können die Ausgabe von durchsuchen git reflog um herauszufinden, welches Commit das letzte sein muss, auf das foo gezeigt hat.

Beachten Sie, dass die Reflog-Datei “foo” selbst gelöscht wird, wenn foo gelöscht wurde, aber da das Reflog von HEAD anders ist, existiert es immer noch.

Sehen Sie sich dieses Python-Skript für Github-Ereignisse an.
https://github.com/jimzucker/githubutils/blob/master/githubreflog.py

Ich habe es erstellt, um Ereignisse abzurufen und sie lesbar zu machen. Sie können es an grep weiterleiten und nach dem Zweig suchen, an dem Sie interessiert sind. Wenn genügend Verlauf vorhanden ist, sehen Sie das Löschereignis für den betreffenden Zweig, die nächste Zeile wird sein das letzte Push-Ereignis und das ist das Sha, an dem Sie interessiert sind.

1647277087 956 Behalt github geloschte Remote Branches im Verlauf Wenn ja konnen
piersb

Es ist ein bisschen umständlich, aber hier ist, wie es geht.

Holen Sie sich ein neues persönliches Zugriffstoken unter Profil / Einstellungen / Entwicklereinstellungen / Persönliche Zugriffstoken, falls Sie noch keines haben.

curl -u "username:PersonalAccessToken" -H "Accept: application/vnd.github.v3+json"  https://api.github.com/repos/RepoOwner/Repo/events

Suchen Sie das DeleteEvent in der Antwort; Dort finden Sie den verwaisten SHA des Zweigs, den Sie gelöscht haben.

git fetch SHA
git switch -c name-of-your-deleted branch

Problem gelöst.

1002460cookie-checkBehält github gelöschte Remote Branches im Verlauf? Wenn ja, können diese wiederhergestellt werden?

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

Privacy policy