Skip to content

Instantly share code, notes, and snippets.

@CristinaSolana
Created February 22, 2012 14:56
Show Gist options
  • Save CristinaSolana/1885435 to your computer and use it in GitHub Desktop.
Save CristinaSolana/1885435 to your computer and use it in GitHub Desktop.
Keeping a fork up to date

1. Clone your fork:

git clone [email protected]:YOUR-USERNAME/YOUR-FORKED-REPO.git

2. Add remote from original repository in your forked repository:

cd into/cloned/fork-repo
git remote add upstream git://github.com/ORIGINAL-DEV-USERNAME/REPO-YOU-FORKED-FROM.git
git fetch upstream

3. Updating your fork from original repo to keep up with their changes:

git pull upstream master
@emrecoban
Copy link

You can update it to:

git pull upstream main

thank you @maryamrmz it worked for me!

@mwaeckerlin
Copy link

How to keep a full project in sync, all the branches from the server and automated (no local checkout)?

I just want a slave mirror.

@mathieucarbou
Copy link

mathieucarbou commented Apr 29, 2021

Found an automatic and flexible solution using Github Actions that can be easily applied quickly to any fork.
See my blog post: https://blog.mathieu.photography/post/649318432483033088/automatic-fork-syncing-with-github
Or Gist: https://gist.github.com/mathieucarbou/96ab30024f0d3fb44cac970219d23efc

@liosc
Copy link

liosc commented Mar 19, 2022

Hi everyone.
I tried the commands suggested in this post. I was able to add the remote but when I try to pull for updating local I get the error "The unauthenticated git protocol on port 9418 is no longer supported.". I solved it using http// instead of git// when adding the upstream.

@uzluisf
Copy link

uzluisf commented Apr 7, 2024

I find it funny that years after years I keep coming back to this gist.

@jef
Copy link

jef commented Apr 8, 2024

I find it funny that years after years I keep coming back to this gist.

Based on this awesome gist, I made a little bash function for myself and use it on a few machines so I don't have to remember 😅

@pa-0
Copy link

pa-0 commented Jun 2, 2024

Just FYI, here's a method for anyone who wants to sync their GitHub forks with upstream without having to create a local clone:

The official GitHub CLI now supports syncing forks remotely with this simple command... (From GitHub's official docs:) "To update the remote fork from its parent, use the gh repo sync -b BRANCH-NAME subcommand and supply your fork and branch name as arguments.

gh repo sync owner/cli-fork -b BRANCH-NAME

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."

Note

It is also possible to simplify the command by only supplying your fork (in the username/repo name syntax), like so:

gh repo sync OWNER/REPO

GitHub CLI will attempt to match your default/main/master branch with that of the parent and sync the two -- assuming there are no merge conflicts. Otherwise, it will notify of such.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment