git kann ich den reflog einer fernbedienung sehen?




update git windows (3)

Bei der unwahrscheinlichen Möglichkeit, dass die entfernte Maschine ein github-Repository ist,

  1. Verwenden Sie zunächst die Ereignis-API von Github, um die Festschreibungs-SHA abzurufen.
    curl https://api.github.com/repos/<user>/<repo>/events

  2. Identifizieren Sie die SHA der verwaisten Festschreibungs-ID , die in keinem Zweig mehr vorhanden ist.

  3. Verwenden Sie anschließend die Refs-API von Github, um einen neuen Zweig zu erstellen, der auf das verwaiste Commit verweist.

    curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d '{"ref":"refs/heads/D-commit", "sha":"<orphan-commit-id>"}' https://api.github.com/repos/<user>/<repo>/git/refs

    Ersetzen Sie <orphan-commit-id> im obigen Befehl durch die in Schritt 2 identifizierte SHA.

  4. Schließlich git fetch den neu erstellten Zweig in Ihr lokales Repository.
    Von dort aus können Sie das Commit (die Commits) wieder in Ihre Arbeit einfügen.

In diesem Artikel finden Sie ein aktuelles Beispiel.

Ist es möglich, den Reflog einer Fernbedienung anzuzeigen? Das heißt, ich möchte wissen, was die Ausgabe von git reflog auf einem anderen Remote-Rechner ist.

Beachten Sie, ich frage nicht nach dem Reflog von Remote-Tracking-Zweigen (wie Herkunft / Master), ich reflog nach dem reflog , der auf dem anderen Computer steht .


Wenn Sie auf GitHub versehentlich eine git push --force auf master gemacht haben, um die zusammengeführten Änderungen abzurufen, und in der Zwischenzeit der zusammengeführte Zweig gelöscht wurde (ja, es ist mir passiert), können Sie nach der zusammengeführten Pull - Anforderung suchen und loslegen zum Commits- Bereich, zB:

Dann gehen Sie zum letzten Commit und klicken auf die Schaltfläche <> (die den Titel "Durchsuchen des Repository an diesem Punkt im Verlauf") enthält.

Dies bringt Sie zum "gelöschten" Punkt der Historie. Von hier aus können Sie:

  • Erstellen Sie einen neuen Zweig und öffnen Sie eine neue Pull-Anforderung (empfohlen, wenn die Änderung aus einem anderen Repository stammt).
  • Öffnen Sie eine neue Pull-Anforderung (empfohlen für Commits in Ihrem Repository).

Die Antwort ist im Grunde "Nein" (außer auf dieser Maschine), da das Umflog ein Protokoll von lokal erstellten Neuzuweisungen einiger Ref-Namen ist. Im Wesentlichen wird das git update-ref -m msg <name> <target> jeder Ausführung von git update-ref -m msg <name> <target> protokolliert ... lokal: .git/logs/<name> wird eine Zeile angehängt:

$ git update-ref -m foo HEAD HEAD^
$ tail -1 .git/logs/HEAD
2418b6ba8fd0289933c9351260a272b8e410867f 8d945134b0cead535d66af29c8eb4228b5dc3763 [redacted] <[redacted]> 1334106483 -0600     foo

(Die Sache vor der Nachricht, in diesem Fall foo , sind keine Leerzeichen, sondern eine Registerkarte; ich habe sie aus SO-Gründen erweitert). Alles andere, was einen Zweigspitze bewegt, ruft konzeptuell git update-ref auf (einige sind Shell-Skripts und tun dies buchstäblich, andere rufen nur den C-Code auf, der alle Dateiaktualisierungen vornimmt) ... und alles in .git/logs bildet den reflog.

Wenn sich in den zugrundeliegenden git: // - und / oder ssh: // -Protokollen Dinge befänden, die Sie beim reflog erreichen lassen, wäre das der Fall, aber soweit ich weiß, gibt es keine.





git