Stellen Sie einen Commit wieder her, der als Pull-Request von einem gelöschten Fork auf GitHub gesendet wurde

Lesezeit: 3 Minuten

Ich habe etwas Dummes getan …

  1. ich Gabeled ein Repo auf GitHub.
  2. Ich habe einige Änderungen vorgenommen, begehented sie auf meiner Gabel.
  3. Ich habe diesen Commit als Pull-Anfrage zurück zum ursprünglichen Repo.
  4. Hier kommt der dumme Teil: I löschend meine Gabel.

Der Eigentümer des ursprünglichen Repos forderte ein paar Änderungen in meinem Code an, bevor er die Pull-Anfrage annehmen konnte, was ich gerne tun würde.

Ich habe versucht, das Repo neu zu forken, aber ich kann den Commit nicht aus der Pull-Anfrage auschecken, er ist nicht einmal als vorhanden „nicht verknüpfter“ Commit (ein Commit, der nicht Teil eines Zweigs oder Tags ist, ich kenne die offizielle Terminologie nicht).

Meine Frage ist: Wie kann ich das Commit wiederherstellen als Pull-Request gesendet?

Wenn es keine Möglichkeit gibt, ist es eine Option, die Änderungen in einem neuen Commit erneut vorzunehmen, aber die Pull-Anforderung würde verloren gehen. Bei meiner Frage geht es nicht darum, die Änderungen aus dem Commit nicht zu verlieren, sondern darum, die Änderungen nicht zu verlieren git-Geschichtewas bedeutet, dass die Commits beibehalten werden SHA1 (und alles andere, was mir vielleicht nicht bewusst ist).

  • Haben Sie die Änderungen also direkt auf der Website vorgenommen, ohne irgendetwas in Git zu klonen? Wenn Sie Ihren Fork geklont haben, haben Sie den Klon bereits auf Ihrem Computer gelöscht?

    – Ajedi32

    7. Januar 2014 um 18:26 Uhr

  • Ich habe es auf meinem Computer geklont, aber ich habe es auch gelöscht.

    – 1Ass

    7. Januar 2014 um 22:22 Uhr

Stellen Sie einen Commit wieder her der als Pull Request von
Chris

Es ist möglich zu fetch Pull-Anforderungen auf Ihren lokalen Computer.

Ohne einen Link zu der betreffenden Pull-Anforderung zu haben, ist es schwierig zu testen, ob dies funktioniert, aber Sie können es versuchen

  1. Erstellen Sie einen neuen Fork des Repositorys,
  2. Klonen Sie Ihre neue Gabel,
  3. fetch Ihre Pull-Anforderung aus dem Upstream-Repository,

    git remote add upstream https://github.com/User/repository.git
    
    $EDITOR .git/config
    # Add `fetch = +refs/pull/*/head:refs/remotes/upstream/pr/*` to
    # the relevant section, as outlined in the linked page. Note that
    # we use `upstream` instead of `origin` as the target.
    
    git fetch upstream
    
  4. merge die Pull-Anforderung in Ihr lokales Repository, z

    git checkout master
    git merge --ff-only upstream/pr/1
    
  5. und dann push es zurück zu Ihrer neuen Gabel.

Wenn dies fehlschlägt, können Sie eine Supportanfrage an GitHub senden und sie bitten, Ihr Repository wiederherzustellen. Von einem FAQ zum Thema Sicherheit:

Wir entfernen Repositorys nicht rückwirkend aus Backups, wenn sie vom Benutzer gelöscht wurden, da wir das Repository möglicherweise für den Benutzer wiederherstellen müssen, wenn es versehentlich entfernt wurde.

Um diesen Prozess einzuleiten, wenden Sie sich an das Support-Team so bald wie möglich.

  • @Chris: Danke für deine Antwort. Die folgenden Links haben mir auch geholfen. Sowohl für den oben erwähnten Punkt 3: stackoverflow.com/questions/6743514/… Und stackoverflow.com/questions/2643502/…

    – Pablofiumara

    12. Januar 2015 um 17:18 Uhr


  • @Chris, das ist reines Gold! Ich bin mir jedoch nicht sicher, wie genau ich die neuen Commits über den vorhandenen Pull-Request hinzufügen kann, ohne einen neuen erstellen zu müssen. Das Pushen auf den neuen Fork funktioniert in diesem Fall nicht wie erwartet, da der alte Pull-Request aus dem unbekannten Repository (dem gelöschten Fork) stammt. Alle Hinweise sind willkommen

    – appellieren

    5. August 2016 um 10:49 Uhr

  • @appoll, ich glaube nicht, dass Sie die alte PR aktualisieren können. Sie müssen eine neue erstellen. Die Dokumentation zum lokalen Ändern einer inaktiven Pull-Anforderung enthält Schritte zum Wechseln zu einem neuen Zweig, zum Pushen dieses neuen Zweigs an GitHub und zum Erstellen eines neuen PR. Außerdem „Die Fernbedienung refs/pull/ Namensraum ist schreibgeschützt“, Sie können also nicht einfach auf den PR-Schiedsrichter selbst zurückgreifen.

    – Chris

    5. August 2016 um 10:58 Uhr

  • @Chris, macht Sinn. Ich habe mich nur gefragt, ob ich etwas Offensichtliches übersehen habe. Danke!

    – appellieren

    5. August 2016 um 11:08 Uhr

  • Ich habe diese ausprobiert, Git konnte auch alle PRs abrufen, was nett war. Aber im vierten Schritt (git merge –ff-only upstream/pr/230) wurde “fatal: Not possible to fast-forward, aborting” zurückgegeben.

    – Saifur Rahman Mohsin

    15. September 2019 um 20:57 Uhr


1001970cookie-checkStellen Sie einen Commit wieder her, der als Pull-Request von einem gelöschten Fork auf GitHub gesendet wurde

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

Privacy policy