890 Stimmen

Neue Aktualisierungen aus dem ursprünglichen GitHub-Repository in das geforkete GitHub-Repository ziehen

Ich habe das Repository von jemandem auf GitHub geforkt und möchte meine Version mit den Commits und Updates aus dem ursprünglichen Repository aktualisieren. Diese wurden gemacht, nachdem ich meine Kopie geforkt habe.

Wie kann ich die Änderungen, die im Ursprung vorgenommen wurden, in mein Repository einbinden?

1 Stimmen

Möglicherweise handelt es sich um ein Duplikat, vielleicht aber auch nur um einen Zusammenhang: Zusammenführen zwischen Forks in GitHub .

0 Stimmen

Falls Sie zusätzliche Tags synchronisieren möchten, tun Sie dies git push --force origin --tags nach den vorgeschlagenen Lösungen!

2 Stimmen

997voto

VonC Punkte 1117238

Sie müssen das ursprüngliche Repository (das, das Sie geforkt haben) als Remote hinzufügen.

Von der GitHub-Dokumentation zum Forking eines Repositorys :

Screenshot of the old GitHub interface with a rectangular lens around the "Fork" button

Sobald der Klon abgeschlossen ist, wird Ihr Repository eine Remote-Datei namens " origin ", die auf Ihren Fork auf GitHub verweist.
Lassen Sie sich durch den Namen nicht verwirren, dieser verweist nicht auf das ursprüngliche Repo, von dem Sie sich abgespalten haben. Um Ihnen zu helfen, den Überblick über diese Datei zu behalten, fügen wir eine weitere entfernte Datei namens "upstream" hinzu:

$ cd PROJECT_NAME
$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
$ git fetch upstream

# then: (like "git pull" which is fetch + merge)
$ git merge upstream/master master

# or, better, replay your local work on top of the fetched branch
# like a "git pull --rebase"
$ git rebase upstream/master

Außerdem gibt es eine Kommandozeilenprogramm ( gh ), die die oben genannten Vorgänge erleichtern können .

Hier sehen Sie, wie es funktioniert:

Flowchart on the result after the commands are executed

Siehe auch " Sind Git-Gabeln eigentlich Git-Klone? ".

141voto

n00shie Punkte 1611

Zusätzlich zu VonCs Antwort können Sie es noch weiter nach Ihren Wünschen optimieren.

Nach dem Holen aus dem entfernten Zweig müssten Sie die Übertragungen noch zusammenführen. Ich würde ersetzen

$ git fetch upstream

mit

$ git pull upstream master

da Git Pull im Wesentlichen Git Fetch + Git Merge ist.

141voto

ARK Punkte 3036

Verwendung:

git remote add upstream ORIGINAL_REPOSITORY_URL

Dadurch wird Ihr Upstream auf das Repository gesetzt, von dem Sie sich abgespalten haben. Dann tun Sie dies:

git fetch upstream      

Dadurch werden alle Zweige einschließlich des Master-Zweigs aus dem ursprünglichen Repository geholt.

Führen Sie diese Daten in Ihrem lokalen Master-Zweig zusammen:

git merge upstream/master

Pushen Sie die Änderungen in Ihr geforktes Repository, d.h. in origin:

git push origin master

Voilà! Sie sind mit der Synchronisierung des ursprünglichen Repositorys fertig.

79voto

Dmitry Pavlov Punkte 28068

Este vidéo zeigt wie man einen Fork direkt von GitHub aus aktualisiert

Schritte:

  1. Öffnen Sie Ihren Fork auf GitHub.
  2. Klicken Sie auf Pull Requests .
  3. Klicken Sie auf New Pull Request . Standardmäßig vergleicht GitHub das Original mit Ihrem Fork, und wenn Sie keine Änderungen vorgenommen haben, sollte es nichts zu vergleichen geben.
  4. Klicken Sie auf switching the base . Jetzt vergleicht GitHub Ihren Fork mit dem Original, und Sie sollten alle aktuellen Änderungen sehen.
  5. Klicken Sie auf Create a pull request für diesen Vergleich und weisen Sie Ihrer Pull-Anfrage einen vorhersehbaren Namen zu (z.B. Update from original).
  6. Klicken Sie auf Create pull request .
  7. Scrollen Sie nach unten und klicken Sie auf Merge pull request und schließlich Confirm verschmelzen. Wenn Ihr Fork keine Änderungen enthielt, können Sie ihn automatisch zusammenführen.

7voto

cakraww Punkte 2033

Wenn Sie es ohne cli tun wollen, können Sie es vollständig auf der Github-Website tun.

  1. Gehen Sie zu Ihrem Fork-Repository.
  2. Klicken Sie auf New pull request .
  3. Stellen Sie sicher, dass Sie Ihren Fork als Basis-Repository und das ursprüngliche (Upstream-)Repository als Head-Repository festlegen. Normalerweise möchten Sie nur den Master-Zweig synchronisieren.
  4. Create a new pull request .
  5. Wählen Sie den Pfeil rechts neben der Schaltfläche "Zusammenführen" und stellen Sie sicher, dass Sie die Option "Umbasieren" statt "Zusammenführen" wählen. Klicken Sie dann auf die Schaltfläche. Auf diese Weise wird keine unnötige Zusammenführungsübergabe erzeugt.
  6. Erledigt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X