Kann ich das Reflog einer Remote-Referenz (nicht der Remote-Referenz) anzeigen?
Lesezeit: 4 Minuten
Alexander Vogel
Ist es möglich, das Reflog einer Fernbedienung anzuzeigen? Das heißt, ich möchte wissen, was das Ergebnis ist git reflog befindet sich auf einem anderen Remote-Computer.
Beachten Sie, dass ich nicht um das Reflog von Remote-Tracking-Zweigen bitte (z. B origin/master); Ich frage nach was reflog sagt auf der anderen Maschine.
Wenn Sie Zugriff auf das Dateisystem des Remote-Systems haben (bei dem es sich häufig um bloße Repos handelt), haben Sie immer die Möglichkeit, dort git reflog auszuführen. Ein solcher Zugriff ist jedoch normalerweise nicht möglich. Ich habe die Angewohnheit, dies auf Git-Servern zu ermöglichen (mithilfe einer schreibgeschützten Dateifreigabe), nur um die Überprüfung des Reflogs auf der Serverseite zu ermöglichen.
– Anders Zommarin
30. Juli 2014 um 11:51
Błażej Czapp
Für den Fall, dass es sich bei der Remote-Maschine um ein Github-Repository handelt,
Verwenden Sie zunächst die Events-API von Github, um den Commit-SHA abzurufen. curl https://api.github.com/repos/<user>/<repo>/events
Identifizieren Sie die SHA der verwaisten Commit-ID das es in keiner Branche mehr gibt.
Verwenden Sie als Nächstes die Refs-API von Github, um einen neuen Zweig zu erstellen, der auf den verwaisten Commit verweist.
Ersetzen <orphan-commit-id> im obigen Befehl mit dem in Schritt 2 identifizierten SHA.
Endlich git fetch den neu erstellten Zweig in Ihr lokales Repository.
Von dort aus können Sie die Commits auswählen oder wieder in Ihre Arbeit integrieren.
Vielen Dank! Für diejenigen, die weniger geneigt sind, die Befehlszeile zu verwenden, können Sie Schritt 3 auch umgehen, indem Sie sie einfach öffnen github.com///commits/…> und erstellen Sie daraus direkt im Dropdown-Menü „Baum:“ einen neuen Zweig. Dann holen Sie es einfach ganz normal ab.
– waldyrious
15. September 2016 um 7:45 Uhr
Wenn Sie eine bekommen "message": "Not Found" Fehler bedeutet, dass Sie sich authentifizieren müssen, indem Sie beispielsweise eine access_token-Abfragezeichenfolge übergeben.
– Andy Hayden
7. März 2017 um 6:39
Für mich der einfachste Weg, das aufzuspüren SHA der verwaisten Commit-ID war es, mir den letzten Build auf CircleCI (bzw [insert CI service here]).
– Samjewell
24. März 2017 um 13:57 Uhr
Hier finden Sie Anweisungen, wie Sie sich authentifizieren können.
– mkasberg
9. August 2018 um 15:42 Uhr
Um es klar zu sagen: Für zukünftige Leser möchten Sie hinzufügen -u <github username>:<github personal access token> zum Befehl in 3.
– Daniel Porteous
11. März 2022 um 3:46
Die Antwort lautet grundsätzlich „Nein“ (außer auf diesem Computer), da das Reflog ein Protokoll lokal vorgenommener Neuzuweisungen einiger Ref-Namen ist. Im Wesentlichen jedes Mal, wenn Sie laufen git update-ref -m msg <name> <target> das Update wird protokolliert … lokal: .git/logs/<name> bekommt eine Zeile angehängt:
(in diesem Fall das Ding vor der Nachricht foo, ist kein Leerzeichen, sondern ein Tabulator; Ich habe es für SO-Zwecke erweitert. Konzeptionell wird alles andere, was eine Zweigspitze bewegt, aufgerufen git update-ref um es zu tun (einige sind Shell-Skripte und tun das im wahrsten Sinne des Wortes, andere rufen einfach den C-Code auf, der die gesamte Dateiaktualisierung durchführt) … und alles darin .git/logs bildet den Reflog.
Wenn es Dinge in den zugrunde liegenden Protokollen git:// und/oder ssh:// gäbe, die es Ihnen ermöglichen, auf das Reflog zuzugreifen, würde das funktionieren, aber soweit ich weiß, gibt es das nicht.
Auf GitHub, wenn Sie versehentlich a git push --force Wenn Sie zuvor auf dem Master die zusammengeführten Änderungen abgerufen haben und in der Zwischenzeit der zusammengeführte Zweig gelöscht wurde (ja, das ist mir passiert), können Sie nach der zusammengeführten Pull-Anfrage suchen und zu gehen Commits Abschnitt, z. B.:
Dann gehst du zum letzten Commit und klickst auf <> Schaltfläche (mit dem Titel „Das Repository an dieser Stelle im Verlauf durchsuchen“).
Dadurch gelangen Sie zum „gelöschten“ Punkt im Verlauf. Von hier aus können Sie:
Erstellen Sie einen neuen Zweig und öffnen Sie dann einen neuen Pull-Request (empfohlen, wenn die Änderung aus einem anderen Repository stammt).
Öffnen Sie eine neue Pull-Anfrage (empfohlen für Commits in Ihrem Repository).
Für Gitlab-Benutzer: Sie können die Commit-SHA-ID des letzten Commits vor dem Rebase kopieren, zur Projektseite gehen, auf das „+“-Symbol neben dem Repo-Namen klicken, auf „Neuer Zweig“ klicken und die letzte Commit-ID einfügen . Sie können diesen neuen Zweig jetzt lokal auschecken oder einen MR erstellen.
– Letik
1. März 2022 um 17:01 Uhr
Mit diesem Befehl können Sie Remote-Relogs anzeigen:
Wenn Sie Zugriff auf das Dateisystem des Remote-Systems haben (bei dem es sich häufig um bloße Repos handelt), haben Sie immer die Möglichkeit, dort git reflog auszuführen. Ein solcher Zugriff ist jedoch normalerweise nicht möglich. Ich habe die Angewohnheit, dies auf Git-Servern zu ermöglichen (mithilfe einer schreibgeschützten Dateifreigabe), nur um die Überprüfung des Reflogs auf der Serverseite zu ermöglichen.
– Anders Zommarin
30. Juli 2014 um 11:51