Sharing work between computers with Git

Since I’ve started working more on Trace Viewer, there have been plenty of times when I’ve wanted to share work on a feature branch between my desktop and laptop before sending that work out to the world for code review.

I originally did this by pushing my feature branch to the project’s public Git repo from one computer and fetching that branch from the other computer.

# On my desktop, after making commits...
git push origin my_feature_branch

# Later, on my laptop...
git fetch origin
git checkout -b my_feature_branch origin/my_feature_branch

This is problematic, though, if the project you’re working on doesn’t like your ugly work-in-progress branches polluting its public repo.

The solution is to do this same push-fetch dance with a fork of the main repo instead of the main repo itself.

At a high level, here are the steps:

  1. Create the fork. In Github, you go to the project’s page and click the “fork” button.
  2. Add the fork as a remote repo on your desktop’s repo.
  3. Add the fork as a remote repo on your laptop’s repo.

In practice, it looks like this:

# 1) Create the fork.

# 2) Add the fork as a remote repo on your desktop's repo.
#    Inside the my-repo project on your desktop...
git remote add fork <your_fork_url>

# 3) Add the fork as a remote repo on your laptop's repo.
#    Inside the my-repo project on your laptop...
git remote add fork <your_fork_url>

Replace <your_fork_url> with the SSH clone URL found on your fork’s Github project page.

Now you can do things like:

# In my-repo on your desktop...
git checkout -b add_readme
echo "This project loves Git!" >>
git commit -am "Adds to the README."

git push fork add_readme

# In my-repo on your laptop...
git fetch fork
git checkout -b add_readme fork/add_readme
# ...
# This project loves Git!

You can do the same thing in the opposite direction, too.

Pretty nifty!

Want to hear when I write something new?

You may also like

ยป Return to all posts