Skip to main content

Einen Fork synchronisieren

Synchronisiere den Fork eines Repositorys, um ihn auf dem aktuellen Stand mit dem vorgelagerten Repository zu halten.

Who can use this feature

People with write access for a forked repository can sync the fork to the upstream repository.

Synchronisieren eines Forks über die Webbenutzeroberfläche

  1. Navigiere in GitHub AE zur Hauptseite des geforkten Repositorys, das du mit dem vorgelagerten Repository synchronisieren möchtest.
  2. Wähle das Dropdownmenü Vorgelagertes Repository abrufen aus. Dropdownliste „Vorgelagertes Repository abrufen“
  3. Überprüfe die Details zu den Commits aus dem vorgelagerten Repository, und klicke dann auf Abrufen und zusammenführen. Schaltfläche „Abrufen und zusammenführen“

Wenn die Änderungen aus dem vorgelagerten Repository Konflikte verursachen, fordert GitHub dich auf, einen Pull Request zu erstellen, um die Konflikte zu beheben.

Synchronisieren eines Forkbranches mit GitHub CLI

GitHub CLI ist ein Open-Source-Tool zur Verwendung von GitHub über die Befehlszeile deines Computers. Wenn du über die Befehlszeile arbeitest, kannst du die GitHub CLI verwenden, um Zeit zu sparen und Kontextwechsel zu vermeiden. Weitere Informationen zu GitHub CLI findest du unter Informationen zu GitHub CLI.

Verwende zum Aktualisieren des Remoteforks aus dem übergeordneten Element den Unterbefehl gh repo sync -b BRANCHNAME, und gib den Forknamen und den Branchnamen als Argument an.

$ gh repo sync owner/cli-fork -b BRANCH_NAME

Wenn die Änderungen aus dem vorgelagerten Repository Konflikte verursachen, kann GitHub CLI keine Synchronisierung ausführen. Du kannst das Flag -force festlegen, um den Zielbranch zu überschreiben.

Synchronisieren eines Forkbranches über die Befehlszeile

Bevor du den Fork mit einem vorgelagerten Repository synchronisieren kannst, musst du in Git ein Remoterepository konfigurieren, das auf das vorgelagerte Repository verweist. Weitere Informationen findest du unter Konfigurieren eines Remoterepositorys für einen Fork.

  1. Öffne TerminalTerminalGit Bash.

  2. Ändere das aktuelle Arbeitsverzeichnis in das lokale Projekt.

  3. Rufe die Branches und die jeweiligen Commits aus dem vorgelagerten Repository ab. Commits in BRANCHNAME werden im lokalen Branch upstream/BRANCHNAME gespeichert.

    $ git fetch upstream
    > remote: Counting objects: 75, done.
    > remote: Compressing objects: 100% (53/53), done.
    > remote: Total 62 (delta 27), reused 44 (delta 9)
    > Unpacking objects: 100% (62/62), done.
    > From https://Hostname/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
    >  * [new branch]      main     -> upstream/main
  4. Sieh dir den lokalen Standardbranch des Forks an. In diesem Fall verwenden wir main.

    $ git checkout main
    > Switched to branch 'main'
  5. Führe die Änderungen aus dem vorgelagerten Standardbranch (in diesem Fall upstream/main) in deinem lokalen Standardbranch zusammen. Dadurch wird der Standardbranch deines Forks ohne Verlust der lokalen Änderungen mit dem vorgelagerten Repository synchronisiert.

    $ git merge upstream/main
    > Updating a422352..5fdff0f
    > Fast-forward
    >  README                    |    9 -------
    >  README.md                 |    7 ++++++
    >  2 files changed, 7 insertions(+), 9 deletions(-)
    >  delete mode 100644 README
    >  create mode 100644 README.md

    Wenn dein lokaler Branch noch keine eindeutigen Commits besitzt, führt Git eine schnelle Weiterleitung aus. Weitere Informationen findest du unter Basic Branching and Merging in der Git-Dokumentation.

    $ git merge upstream/main
    > Updating 34e91da..16c56ad
    > Fast-forward
    >  README.md                 |    5 +++--
    >  1 file changed, 3 insertions(+), 2 deletions(-)

    Wenn dein lokaler Branch eindeutige Commits hatte, musst du möglicherweise Konflikte lösen. Weitere Informationen findest du unter Informationen zu Mergekonflikten.

Tipp: Durch Synchronisierung des Forks wird nur die lokale Kopie des Repositorys aktualisiert. Um den Fork auf your enterprise zu aktualisieren, musst du deine Änderungen pushen.