Wie aktualisiere oder synchronisiere ich ein Fork-Repository auf GitHub?

Lesezeit: 7 Minuten

Wie aktualisiere oder synchronisiere ich ein Fork Repository auf GitHub
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

    – 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

Wie aktualisiere oder synchronisiere ich ein Fork Repository auf GitHub
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.

  1. Öffnen Sie Ihren Fork auf GitHub.
  2. Klicke auf Pull-Requests.
  3. 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.
  4. 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.
    Geben Sie hier die Bildbeschreibung ein
  5. Pull-Request erstellen und weisen Sie Ihrer Pull-Anfrage einen vorhersehbaren Namen zu (z. B. Update from original).
  6. 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.

  1. Die Standardeinstellung erstellt einen hässlichen Merge-Commit.
  2. 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.
  3. 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

1646894293 907 Wie aktualisiere oder synchronisiere ich ein Fork Repository auf GitHub
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.

  1. Wechseln Sie in Ihr lokales Repository.

    • Wechseln Sie zum Master-Zweig, wenn dies nicht der Fall ist git checkout master
  2. Fügen Sie das übergeordnete Element als Remote-Repository hinzu, git remote add upstream <repo-location>

  3. Problem git fetch upstream
  4. Problem git rebase upstream/master

    • In diesem Stadium überprüfen Sie, ob das Festschreiben, was durch Eingabe zusammengeführt wird git status
  5. 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:

git remote add upstream https://github.com/whoever/whatever.git

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 git@github.com:your_name/project_name.git
cd project_name

Wenn das gegeben ist, müssen Sie in dieser Reihenfolge fortfahren:

  1. Fügen Sie den „Upstream“ zu Ihrem geklonten Repository („Ursprung“) hinzu:

    git remote add upstream git@github.com:original_author/project_name.git
    
  2. Holen Sie sich die Commits (und Zweige) vom “Upstream”:

    git fetch upstream
    
  3. Wechseln Sie zum „Master“-Zweig Ihres Forks („Origin“):

    git checkout master
    
  4. Verstauen Sie die Änderungen Ihres „Master“-Zweigs:

    git stash
    
  5. Führen Sie die Änderungen aus dem „Master“-Zweig des „Upstream“ in den „Master“-Zweig Ihres „Ursprungs“ zusammen:

    git merge upstream/master
    
  6. Lösen Sie Zusammenführungskonflikte, falls vorhanden, und bestätigen Sie Ihre Zusammenführung

    git commit -am "Merged from upstream"
    
  7. Schieben Sie die Änderungen auf Ihren Fork

    git push
    
  8. Holen Sie sich Ihre gespeicherten Änderungen zurück (falls vorhanden)

    git stash pop
    
  9. Du bist fertig! Glückwünsche!

GitHub bietet auch Anleitungen zu diesem Thema: Fork synchronisieren

  • Teilweise geholfen: Is git remote add upstream git@github.com:original_author/project_name.git nur ein Alias ​​für git remote add upstream https://github.com/original_author/project_name.git ?

    – Wolf

    26. Juni 2017 um 14:44 Uhr

  • Wolf, ich schätze, Sie wissen das inzwischen, aber für die Nachwelt … Es ist das Format für ssh. help.github.com/articles/configuring-a-remote-for-a-fork

    – Brad Ellis

    26. Januar 2018 um 21:02 Uhr


  • 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

986670cookie-checkWie aktualisiere oder synchronisiere ich ein Fork-Repository auf GitHub?

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

Privacy policy