Wie aktualisiere oder synchronisiere ich ein Fork-Repository auf GitHub?
Lesezeit: 7 Minuten
Lea Hayes
Ich habe ein Projekt gegabelt, mehrere Korrekturen angewendet und eine Pull-Anforderung erstellt, die akzeptiert wurde. Ein paar Tage später wurde eine weitere Änderung von einem anderen Mitwirkenden vorgenommen. Meine Gabel enthält diese Änderung also nicht.
Wie bekomme ich das Wechselgeld in meine Fork? Muss ich meinen Fork löschen und neu erstellen, wenn ich weitere Änderungen beizutragen habe? Oder gibt es einen Update-Button?
Dies kann auch über die Github-Benutzeroberfläche erfolgen. Ich möchte Kredit geben [to this other poster][1]. [1]: stackoverflow.com/a/21131381/728141
Ist dies ein Duplikat von stackoverflow.com/questions/3903817/… ?
– David Cary
29. August 2015 um 12:06 Uhr
Seit Mai 2021 ist dies direkt aus der GitHub-UI ohne extra Pull-Request möglich, siehe Änderungsprotokoll und stackoverflow.com/a/67425996
– Marcono1234
8. Mai 2021 um 0:23 Uhr
lobzik
Ab Mai 2014 ist es möglich, einen Fork direkt von GitHub aus zu aktualisieren. Dies funktioniert noch im September 2017, ABER es wird zu einem schmutzigen Commit-Verlauf führen.
Öffnen Sie Ihren Fork auf GitHub.
Klicke auf Pull-Requests.
Klicke auf Neuer Pull-Request. Standardmäßig vergleicht GitHub das Original mit Ihrem Fork, und es sollte nichts zu vergleichen sein, wenn Sie keine Änderungen vorgenommen haben.
Klicken Basis wechseln wenn Sie diesen Link sehen. Andernfalls manuell einstellen Basisgabel Drop nach unten zu Ihrer Gabel, und die Kopf Gabel zum stromaufwärts. Jetzt vergleicht GitHub Ihren Fork mit dem Original, und Sie sollten alle neuesten Änderungen sehen.
Pull-Request erstellen und weisen Sie Ihrer Pull-Anfrage einen vorhersehbaren Namen zu (z. B. Update from original).
Scrollen Sie nach unten zu Pull-Request zusammenführenaber klicken Sie noch nichts an.
Jetzt haben Sie drei Optionen, aber jede führt zu einem weniger als sauberen Commit-Verlauf.
Die Standardeinstellung erstellt einen hässlichen Merge-Commit.
Wenn Sie auf das Dropdown-Menü klicken und „Squash and merge“ wählen, werden alle dazwischenliegenden Commits zu einem zusammengefasst. Das ist meistens etwas, was Sie nicht wollen.
Wenn Sie klicken Rebasieren und zusammenführenwerden alle Commits “mit” Ihnen gemacht, die Original-PRs werden auf Ihre PR verlinken und GitHub wird angezeigt This branch is X commits ahead, Y commits behind <original fork>.
Also ja, Sie können Ihr Repo über die GitHub-Web-Benutzeroberfläche mit seinem Upstream auf dem neuesten Stand halten, aber dadurch wird Ihr Commit-Verlauf beschmutzt. Bleiben Sie stattdessen bei der Befehlszeile – es ist ganz einfach.
Das hat einmal super funktioniert. Beim zweiten Mal funktionierte dieser Vorgang nicht auf die gleiche Weise: Der Link “Basis wechseln” wurde nicht angezeigt. Und als ich auf „Klicken, um eine Pull-Anfrage zu erstellen“ klickte, wurde ein PR auf dem SOURCE-Repo erstellt. NICHT was ich wollte..
– WestCoastProjects
21. August 2014 um 18:14 Uhr
Funktioniert immer noch (März 2015), obwohl der Link “Switching the base” nicht mehr vorhanden ist. Sie müssen die Dropdown-Listen „Basis“ so ändern, dass beide auf Ihren Fork zeigen, und dann erhalten Sie die Aufforderung „Über Repos vergleichen“, die Sie dorthin führt, wo Sie möchten.
– mluisbraun
4. März 2015 um 14:05 Uhr
April 2015. Funktioniert. Danke. Ich habe “Switching to base” bekommen. Schritt 6 war jedoch “Pull-Request erstellen” -> Kommentar eingeben -> “Pull-Request erstellen”. Am Ende mit 1 Commit vor dem Original.
– Kartland
9. April 2015 um 0:08 Uhr
@cartland (oder andere) – ja, es heißt “Dieser Zweig ist 1 Commit vor …” Ist das etwas, worüber man sich Sorgen machen muss? Kann man diese Meldung wegbekommen?
– RenniePet
15. Mai 2015 um 22:59 Uhr
wäre es nicht besser, mit einem einfachen Update- oder Sync-Button!
– Transformator
24. Januar 2017 um 3:32 Uhr
Dadurch wird mein lokaler Fork aktualisiert, aber mein Fork auf Github.com sagt immer noch “43 Commits Behind”. Ich musste die Technik von lobzik verwenden, um einen Pull-Request für mich selbst zu erstellen, um die Master-Änderungen in meinen Fork von Github.com einzufügen.
– Michael McGinnis
23. Januar 2015 um 17:38 Uhr
@MichaelMcGinnis Nach dem lokalen Zusammenführen müssten Sie Ihre Änderungen an GitHub übertragen. git push origin master
– springnett
11. Februar 2015 um 22:50 Uhr
Könnte klug sein, damit zu pushen --follow-tags: stackoverflow.com/a/26438076/667847
– Kenny
6. November 2015 um 15:19 Uhr
Ich muss es für alle Filialen separat machen git merge upstream/masterdann checken Sie aus, um Branch zu entwickeln und zu tun git merge upstream/develop
– Schobi
28. Mai 2017 um 13:02 Uhr
Das hat geholfen. Das zusammenführende Kapitel ist für mich wichtig.
– rundekugel
29. September 2020 um 12:14 Uhr
Sahar Rabinoviz
Viele Antworten führen dazu, dass Sie Ihre Gabel bewegen ein Commit voraus des übergeordneten Repositorys. Diese Antwort fasst die gefundenen Schritte zusammen Hier welches wird Verschieben Sie Ihren Fork auf denselben Commit wie den Parent.
Wechseln Sie in Ihr lokales Repository.
Wechseln Sie zum Master-Zweig, wenn dies nicht der Fall ist git checkout master
Fügen Sie das übergeordnete Element als Remote-Repository hinzu, git remote add upstream <repo-location>
Problem git fetch upstream
Problem git rebase upstream/master
In diesem Stadium überprüfen Sie, ob das Festschreiben, was durch Eingabe zusammengeführt wird git status
Problem git push origin master
Weitere Informationen zu diesen Befehlen finden Sie unter Schritt 3.
@MT: Wo gibst du diese Befehle ein? Der Kern der Frage, so wie ich es verstehe, ist, wie Sie Ihr Persönliches resynchronisieren können GitHub Fork mit dem Hauptprojekt und tun Sie dies alles von GitHub. Mit anderen Worten, wie können Sie Ihren Remote Fork aktualisieren ohne ein lokales Repository?
– Johannes Y
16. Mai 2016 um 15:33 Uhr
@JohnY Die Verwendung von GitHub erstellt immer einen zusätzlichen Commit. Sie müssen all dies in einer Shell auf einem lokalen Repo tun, um diesen zusätzlichen Commit zu vermeiden.
– Jonathan Kreuz
14. Oktober 2016 um 21:51 Uhr
Wenn, wie ich, Sie Übergebe niemals etwas direkt dem Meisterwas Sie wirklich sollten, können Sie Folgendes tun.
Erstellen Sie aus dem lokalen Klon Ihres Forks Ihre Upstream-Fernbedienung. Das müssen Sie nur einmal tun:
Wann immer Sie dann den Upstream-Repository-Master-Zweig einholen möchten, müssen Sie Folgendes tun:
git checkout master
git pull upstream master
Angenommen, Sie haben selbst nie etwas gegen den Meister begangen, sollten Sie bereits fertig sein. Jetzt können Sie Ihren lokalen Master zu Ihrem Ursprungs-Remote-GitHub-Fork pushen. Sie könnten Ihren Entwicklungszweig auch auf Ihren jetzt aktuellen lokalen Master umbasieren.
Nach der anfänglichen Upstream-Einrichtung und dem Master-Checkout müssen Sie nur noch den folgenden Befehl ausführen, um Ihren Master mit dem Upstream zu synchronisieren: git pull upstream master.
@MT: Wo gibst du diese Befehle ein? Der Kern der Frage, so wie ich es verstehe, ist, wie Sie Ihr Persönliches resynchronisieren können GitHub Fork mit dem Hauptprojekt und tun Sie dies alles von GitHub. Mit anderen Worten, wie können Sie Ihren Remote Fork aktualisieren ohne ein lokales Repository?
– Johannes Y
16. Mai 2016 um 15:33 Uhr
@JohnY Die Verwendung von GitHub erstellt immer einen zusätzlichen Commit. Sie müssen all dies in einer Shell auf einem lokalen Repo tun, um diesen zusätzlichen Commit zu vermeiden.
– Jonathan Kreuz
14. Oktober 2016 um 21:51 Uhr
Vorwort: Ihr Fork ist der “Ursprung” und das Repository, von dem Sie gegabelt haben, ist der “Upstream”.
Nehmen wir an, Sie haben Ihren Fork bereits mit einem Befehl wie diesem auf Ihren Computer geklont:
git clone [email protected]:your_name/project_name.git
cd project_name
Wenn das gegeben ist, müssen Sie in dieser Reihenfolge fortfahren:
Fügen Sie den „Upstream“ zu Ihrem geklonten Repository („Ursprung“) hinzu:
Teilweise geholfen: Is git remote add upstream [email protected]:original_author/project_name.git nur ein Alias für git remote add upstream https://github.com/original_author/project_name.git ?
Danke sehr. git stash und git stash pop Teil sehr hilfreich
– Krishna
4. März 2019 um 5:41 Uhr
Das hat funktioniert. Nach git merge upstream/master schlug die automatische Zusammenführung aufgrund nicht zusammengeführter Pfade fehl, die ich ausführen musste git add -A dann git commit -m “message”, dann war es auf dem neuesten Stand.
– Vicente Garcia-Reyes
31. Dezember 2019 um 13:10 Uhr
9866700cookie-checkWie aktualisiere oder synchronisiere ich ein Fork-Repository auf GitHub?yes
Dies kann auch über die Github-Benutzeroberfläche erfolgen. Ich möchte Kredit geben [to this other poster][1]. [1]: stackoverflow.com/a/21131381/728141
– Mike Schroll
20. Februar 2014 um 13:00 Uhr
Ein weiterer guter Blogbeitrag dazu – Einen GitHub-Fork auf dem neuesten Stand halten
– Arup Rakshit
15. Oktober 2014 um 17:26 Uhr
Gefunden in den Github-Hilfeartikeln: help.github.com/articles/syncing-a-fork
– Pranav
2. April 2015 um 8:57 Uhr
Ist dies ein Duplikat von stackoverflow.com/questions/3903817/… ?
– David Cary
29. August 2015 um 12:06 Uhr
Seit Mai 2021 ist dies direkt aus der GitHub-UI ohne extra Pull-Request möglich, siehe Änderungsprotokoll und stackoverflow.com/a/67425996
– Marcono1234
8. Mai 2021 um 0:23 Uhr