Keeping A GitHub Fork Updated

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 master branch:

git fetch upstream
git rebase upstream/master

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

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/master
Goal-Oriented Git book cover

Goal-Oriented Git is our practical, no-nonsense guide to using Git to achieve your goals in everyday situations. If you've ever wanted to improve your Git skills without getting distracted by complex internals, then this book is for you.