Zusammenführen zwischen Forks in GitHub

Lesezeit: 4 Minuten

Ich habe ein GitHub-Repository gegabelt. Dann habe ich einige Änderungen an meiner Gabel vorgenommen. Dann hat das ursprüngliche Repository meine Änderungen und einige andere zusammengeführt. Jetzt möchte ich die fehlenden Änderungen zusammenführen. Ich habe einen einfachen Pull gefolgt von Push versucht, aber dies ergibt meine Commits doppelt. Was ist der beste Weg, es zu tun?

Zusammenfuhren zwischen Forks in GitHub
Jim Puls

Sie haben wahrscheinlich eine “Fernbedienung” für jedes Repository. Sie müssen von einer Fernbedienung ziehen und auf die andere drücken.

Wenn Sie ursprünglich von Ihrem Fork geklont haben, wird diese Fernbedienung “Ursprung” genannt. Wenn Sie es noch nicht hinzugefügt haben, müssen Sie das andere Repository als weitere Fernbedienung hinzufügen:

git remote add <shortname> git://github.com/<ownerName>/repo.git

Nachdem alles eingerichtet ist, sollten Sie tatsächlich in der Lage sein (github geänderter Standardzweig von master zu mainbei Bedarf ändern)

git pull <shortname> master
git push origin

Erinnere dich, git pull ist nichts anderes als ein Makro, das tut git fetch und git merge, in dieser Reihenfolge. Sie müssen nur die Liste der Commits aus dem anderen Repository abrufen und dann seinen Zweig mit Ihrem Baum zusammenführen. Das Zusammenführen sollte mit Ihren Commits in beiden Zweigen das Richtige tun.

GitHub bietet Ihnen in all seiner fortwährenden Großartigkeit natürlich eine Abkürzung. Es gibt einen “Schnellvorlauf”-Button auf Ihrem Fork des Repositorys, mit dem Sie Ihren Fork nachholen können, wenn Sie vollständig mit der anderen Seite zusammengeführt wurden.

  • Gibt es eine Möglichkeit, dies vollständig mit Remote-Operationen zu tun? Wenn ich das richtig verstehe, laden Sie mit dieser Methode alle Änderungen in das lokale Repository herunter und laden sie dann alle zurück in den Fork auf Github hoch (pushen). Ich würde lieber alle Änderungen irgendwie direkt in den Fork auf Github ziehen.

    – Ken Liu

    7. Dezember 2009 um 4:56 Uhr

  • Nein. Git unterstützt das nicht. Glücklicherweise hat Github jetzt jedoch einen Merge-Button in der Weboberfläche.

    – cweiske

    21. Oktober 2011 um 5:04 Uhr

  • @cweiske – wo ist diese Zusammenführen-Schaltfläche? Ich habe alle Admin-Seiten und Hauptseiten durchsucht, kann sie aber nicht finden :(.

    – Adam

    18. Dezember 2011 um 15:33 Uhr

  • @Adam, es befindet sich auf der Pull-Request-Seite. Der Forker würde also einen Pull-Request öffnen, um einen seiner Branches mit einem Ihrer zu verschmelzen. Dort können Sie auf die Schaltfläche Zusammenführen klicken.

    – Rob Barreca

    11. Dezember 2012 um 22:18 Uhr

  • Die Taste Vorspulen scheint nicht mehr verfügbar zu sein. Zur Information habe ich in meinem Befehl eine andere Git-URL verwendet: git remote add snaury [email protected]:snaury/script-runner

    – oho

    5. Dezember 2013 um 21:11 Uhr


Zusammenfuhren zwischen Forks in GitHub
Bob Spryn

Die oben akzeptierte Antwort hat bei mir also nicht perfekt funktioniert. Es schien nämlich den Link zum ursprünglichen Github-Autor zu verlieren, als es funktionierte, und danach schien es nicht mehr zu funktionieren. Ich denke, das Problem war, dass die Antwort das / zwischen dem Remote-Namen und der Verzweigung weggelassen hat. Es würde also einen Zweig namens Master von der Fernbedienung abrufen, aber dann nichts damit anfangen können. Nicht wirklich sicher, warum.

Hier ist der Weg github empfiehlt von ihrer Website.

Sobald Sie Ihr gegabeltes Repo geklont haben, müssen Sie eine Fernbedienung hinzufügen, die auf das Original verweist, wie in der vorherigen Antwort angegeben. Sie nennen es gerne stromaufwärts, aber es spielt keine Rolle.

git remote add upstream git://github.com/octocat/Spoon-Knife.git

Dann holst du

git fetch upstream

und Sie sehen die Versionen, die zum Zusammenführen verfügbar sind

From git://github.com/octocat/Spoon-Knife.git
 * [new branch]      gh-pages   -> upstream/gh-pages
 * [new branch]      master     -> upstream/main

Dann müssen Sie nur den Zweig auswählen, in den Sie zusammenführen möchten. Beachten Sie, dass dies keine lokalen Zweige sind, sie werden unter Remotes gespeichert. Aber vorausgesetzt, Sie haben keinen lokalen Zweig namens upstream/master (was erlaubt ist), sollten Sie mit der folgenden Zeile zusammenführen:

git merge upstream/main

Alternativ können Sie das Abrufen/Zusammenführen (zumindest nach dem ersten Abrufen) mit dieser Zeile abkürzen:

git pull upstream/main

  • Das Problem ist, dass, wenn Sie bereits Änderungen haben, die von Ihnen übernommenen Änderungen einen Merge-Commit erstellen. In einigen Fällen nützlich, aber meistens etwas sinnlos.

    – Pablo Olmos de Aguilera C.

    12. Januar 2014 um 23:47 Uhr

  • Verwenden Sie in diesem Fall git rebase es würde viel besser funktionieren und diese hässlichen leeren Merge-Commits weglassen

    – Fruch

    19. September 2014 um 7:25 Uhr

924460cookie-checkZusammenführen zwischen Forks in GitHub

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

Privacy policy