There are three ways one can do that: from the web UI (Option 1), from the GitHub CLI (Option 2), or from the command line (Option 3).
Option 1 – Web UI
On GitHub, navigate to the main page of the forked repository that you want to sync with the upstream repository.
Select the Fetch upstream drop-down.
- Review the details about the commits from the upstream repository, then click Fetch and merge.
Option 2 – GitHub CLI
To update the remote fork from its parent, use the
gh repo sync subcommand and supply your fork name as argument.
$ gh repo sync owner/cli-fork
If the changes from the upstream repository cause conflict then the GitHub CLI can’t sync. You can set the
-force flag to overwrite the destination branch.
Option 3 – Command Line
Before syncing one’s fork with an upstream repository, one must configure a remote that points to the upstream repository in Git.
1 Open Git Bash.
2 Change the current working directory to your local project.
3 Fetch the branches and their respective commits from the upstream repository. Commits to BRANCHNAME will be stored in the local branch upstream/BRANCHNAME.
$ 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://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY > * [new branch] main -> upstream/main
4 Check out your fork’s local default branch – in this case, we use main.
$ git checkout main > Switched to branch 'main'
5 Merge the changes from the upstream default branch – in this case, upstream/main – into your local default branch. This brings your fork’s default branch into sync with the upstream repository, without losing your local changes.
$ 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
If one’s local branch didn’t have any unique commits, Git will instead perform a “fast-forward”:
$ git merge upstream/main > Updating 34e91da..16c56ad > Fast-forward > README.md | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-)
Note: Syncing one’s fork only updates one’s local copy of the repo.
To update one’s fork on GitHub.com, one must push ones changes.
Source: GitHub Docs – Syncing a fork