Keeping A GitHub Fork Updated

Dan Croak

I forked a GitHub repo thoughtbot/dotfiles to croaky/dotfiles and want to keep it updated.

Track

After I forked the repo to your Github account, I did this one time:

git clone git@github.com:croaky/dotfiles.git
cd dotfiles
git remote add upstream git@github.com:thoughtbot/dotfiles.git

Update

Each time I want to update, from my local main branch:

git fetch upstream
git rebase upstream/main

The goal of the rebase is to have a cleaner history if I have local changes or commits on the repo. It’s the difference between the the left and the right in the image below.

image

If you want to learn more rebasing a forked repo on top of main, Git interactive rebase, squash, amend and other ways of rewriting history provides more detail about it.

Commit rights upstream

If I also have commit rights to the upstream repo, I can create a local upstream branch and do work that will go upstream there.

git checkout -b upstream upstream/main

About thoughtbot

We've been helping engineering teams deliver exceptional products for over 20 years. Our designers, developers, and product managers work closely with teams to solve your toughest software challenges through collaborative design and development. Learn more about us.