Wie aktualisiere ich ein von GitHub geforktes Repository?
Ich habe vor kurzem ein Projekt geforkt und mehrere Korrekturen vorgenommen. Ich habe dann einen Pull-Request erstellt, der dann akzeptiert wurde.
Ein paar Tage später wurde eine weitere Änderung von einem anderen Mitwirkenden vorgenommen. Meine Abspaltung enthält diese Änderung also nicht.
Wie kann ich diese Änderung in meinen Fork bekommen? Muss ich meine Abspaltung löschen und neu erstellen, wenn ich weitere Änderungen beisteuern möchte? Oder gibt es eine Schaltfläche zum Aktualisieren?
3364
3
In Ihrem lokalen Klon des geforkten Repositorys können Sie das ursprüngliche GitHub-Repository als "Remote" hinzufügen. ("Remotes" sind so etwas wie Spitznamen für die URLs von Repositories -
origin
ist z.B. einer.) Dann können Sie alle Zweige aus diesem Upstream-Repository abrufen und Ihre Arbeit auf die Upstream-Version umstellen, um weiter daran zu arbeiten. In Form von Befehlen könnte das wie folgt aussehen:Wenn Sie die Geschichte Ihres Master-Zweiges nicht umschreiben wollen (zum Beispiel weil andere Leute ihn geklont haben könnten), dann sollten Sie den letzten Befehl durch
git merge upstream/master
ersetzen. Um jedoch weitere Pull Requests zu erstellen, die so sauber wie möglich sind, ist es wahrscheinlich besser, rebase zu machen.Wenn Sie Ihren Zweig auf
upstream/master
rebased haben, müssen Sie eventuell den Push erzwingen, um ihn in Ihr eigenes Repository auf GitHub zu pushen, das Sie gegabelt haben. Du würdest das mit tun:Sie müssen das
-f
nur beim ersten Mal nach dem Re-Based verwenden.Seit Mai 2014 ist es möglich, einen Fork direkt von GitHub aus zu aktualisieren. Dies funktioniert seit September 2017 immer noch, Aber es führt zu einem schmutzigen Commit-Verlauf.
Update from original
).Jetzt haben Sie drei Optionen, aber jede führt zu einem nicht ganz sauberen Commit-Verlauf.
Dieser Zweig ist X Commits voraus, Y Commits hinter
.Sie können also Ihr Projektarchiv über die GitHub-Weboberfläche mit seinem Upstream auf dem neuesten Stand halten, aber dadurch wird Ihr Commit-Verlauf beschmutzt. Bleiben Sie stattdessen bei der Kommandozeile - es ist einfach.
Hier ist das offizielle Dokument von GitHub über Syncing a fork: