Skip to content

Instantly share code, notes, and snippets.

@CristinaSolana
Created February 22, 2012 14:56
Show Gist options
  • Select an option

  • Save CristinaSolana/1885435 to your computer and use it in GitHub Desktop.

Select an option

Save CristinaSolana/1885435 to your computer and use it in GitHub Desktop.
Keeping a fork up to date

1. Clone your fork:

git clone git@github.com: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
@nakul-shahdadpuri
Copy link
Copy Markdown

Thanks, helped a lot.

@Praful932
Copy link
Copy Markdown

I built a web based solution to sync the fork with the original using only GitHub APIs. It's all web, you don't need to do anything on the client
https://forkrefresh.herokuapp.com
As a plus it tells you the status off all your repos as compared to sources of the forks.

This helps! Thank you

@sami2020pro
Copy link
Copy Markdown

Thank you ❤️

@vivian-duong
Copy link
Copy Markdown

git pull is a git fetch and git merge in one step.
So the git fetch in step 2 is redundant if you're going to do a git pull anyway.

I second this. git fetch and then git pull won't break anything, but it's redundant.

@maryamrmz
Copy link
Copy Markdown

You can update it to:

git pull upstream main

@rebase-upstream
Copy link
Copy Markdown

This post should have been the first Google result. Would have saved me some time.

@emrecoban
Copy link
Copy Markdown

You can update it to:

git pull upstream main

thank you @maryamrmz it worked for me!

@mwaeckerlin
Copy link
Copy Markdown

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
Copy Markdown

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
Copy Markdown

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
Copy Markdown

uzluisf commented Apr 7, 2024

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

@jef
Copy link
Copy Markdown

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
Copy Markdown

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