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.

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 [email protected]{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>

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.
git reflog
zeigt Ihnen die Geschichte von HEAD
. Wenn der von Ihnen gelöschte Zweig benannt wurde foo
dann sollten Sie in dieser Ausgabe Zeilen wie sehen 48534f5 [email protected]{0}: checkout: moving from master to foo
oder 48534f5 [email protected]{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.

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.
10024600cookie-checkBehält github gelöschte Remote Branches im Verlauf? Wenn ja, können diese wiederhergestellt werden?yes