Wie ändere ich das GitHub-Projekt, aus dem ich gegabelt habe?


77

Ich gabelte ein Projekt, nahm einige Änderungen vor und erhielt eine Pull-Anfrage. Aber jetzt wurde das Projekt, das ich gegabelt habe, in ein anderes Repository verschoben und ist eine Verzweigung dieses Repositorys.

Das ist:

Original -> MyFork

Jetzt:

NewOriginal -> Original -> MyFork

Wie würde ich es zu folgendem bringen?

NewOriginal -> MyFork

40
Die akzeptierte Antwort bietet eine Problemumgehung, beantwortet jedoch nicht die Hauptfrage, wie die Metadaten von GitHub selbst geändert werden sollen. Ich interessiere mich für das Gleiche.
Matthew Flaschen

Antworten:


58

Vor Ort können Sie einfach das Ziel ändern, unter dem sich das ursprüngliche Repository befindet. Normalerweise wird dieses Repository als Upstream bezeichnet . Gehen Sie also folgendermaßen vor:

git remote set-url upstream git://example.com/NewOriginal.git

Abhängig davon, welchen Host Sie verwenden (dh wo sich Ihre Gabel befindet), gibt es möglicherweise einige zusätzliche interne Links, die Sie nicht so einfach ändern können. Bei Github ist die Gabel beispielsweise direkt mit dem Original verknüpft, aus dem Sie gegabelt haben. In diesem Fall müssen Sie das neue Projekt erneut verzweigen und mit der neuen Verzweigung arbeiten.

In diesem Fall können Sie jedoch auch die URL des Ursprungs- Repositorys leicht ändern und einfach alles, was Sie zuvor in Ihrer alten Verzweigung geändert haben, in Ihre neue Verzweigung verschieben.


12
Normalerweise heißt die Fernbedienung für das Upstream-Repositoryorigin
knittl

7
@knittl: Nicht wirklich, das Upstream-Repository ist das ursprüngliche Repository, auf dem die Gabel basiert. Origin ist Ihr öffentliches Repository, aus dem Sie geklont haben, dh die Gabelung.
stupsen

2
Was ist, wenn Sie ein Repository klonen, sind die Zweige dieses Repositorys über die originFernbedienung verfügbar . Die URL der originFernbedienung ist die URL, von der geklont wurde. upstreamStandardmäßig gibt es keine Fernbedienung in Git
Knittl

5
@knittl: Nie gesagt, dass es standardmäßig dort war, aber normalerweise fügen Sie das ursprüngliche Projekt sowie eine neue Fernbedienung namens Upstream hinzu , damit Sie Ihre Gabel tatsächlich vom ursprünglichen Projekt aktualisieren können ...
stupsen Sie den

5
Dies ist korrekt für Git, aber nicht für GitHub. Diese Antwort ist die richtige für GitHub.
Ian

69

HINWEIS : Die folgende Lösung ist unvollständig, da Sie alle Wiki-Inhalte und Probleme verlieren, die für Ihre Gabelung spezifisch sind.

Sie können dies mit den folgenden Schritten erreichen:

  1. Ziehen Sie alle Zweige und Tags von Ihrer vorhandenen Gabel herunter.
  2. Löschen Sie Ihr Repository auf GitHub.
  3. Fork aus dem neuen Repository.
  4. Aktualisieren Sie gegebenenfalls die Remote- URL .
  5. Verschieben Sie alle Ihre lokalen Zweige und Tags in das neue Repository.

8
Dies ist die richtige Antwort auf die gestellte Frage - das OP muss die Ansicht von Github über das "Elternteil" ändern. Wenn er Pull-Anfragen ausgibt, gehen diese an das neue Elternteil und nicht an das alte. Die einzige Antwort scheint darin zu bestehen, das Repository und die Verzweigung erneut zu löschen.
Ether

34
Dies ist eine Problemumgehung für eine fehlende Funktion in Github.
Abergmeier

2
Solch ein Scham-Github hat dafür immer noch keinen schöneren Workflow.
Ashimema

2
Es kann sich lohnen, hinzuzufügen, dass dort Skripte vorhanden sind, mit denen Sie Probleme von Github-Repository zu Repository migrieren können, und dass Github-Wikis selbst nur Git-Wiederholungen sind. Sie können dies auch migrieren
Ashimema,

Vielen Dank! Aber können Sie die git-Befehle zeigen, wie diese Schritte tatsächlich ausgeführt werden? Idealerweise auch das Gabeln und Wiederherstellen der Github-Wikis? Und @Ashimema, können Sie Links zu guten Skripten für die Migration von Problemen erstellen?
Nealmcb

9

Aktualisieren Sie die Remote- URL in Ihrem Repository:

git remote set-url origin <url to NewOriginal, e.g. git://…/bla.git>

3
Das wird nicht funktionieren. Für das OP muss der Ursprung weiterhin auf MyFork festgelegt sein, damit er Pull-Anforderungen für NewOriginal ausführen kann, sobald er seine Änderungen an MyFork auf GitHub übertragen hat. Er hat keinen Schreibzugriff auf NewOriginal. Wenn Sie also den Ursprung darauf setzen, schlagen seine Pushs fehl.
Guy

2

Angenommen, Sie haben das richtige Gabeln und Hinzufügen durchgeführt, siehe githubHelpOnFork . Um nur die Upstream-URL zu ändern, gehen Sie wie folgt vor:

  1. Überprüfen Sie, wie Ihr aktueller Upstream und Ursprung aussieht:

    git remote -v
    
  2. Wenn der Upstream aufgelistet ist und Sie nur die URL ändern möchten, tun Sie, was @poke vorgeschlagen hat (wenn nicht, folgen Sie dem obigen helpGithub-Link, um einen neuen Upstream hinzuzufügen):

    git remote set-url upstream git://example.com/NewOriginal.git
    
  3. Stellen Sie dann sicher, dass der Upstream auf die neue URL verweist

    Git Remote -v

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.