tutorial - update git windows




git kann ich den reflog einer fernbedienung sehen? (2)

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 .


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