If you are like me you find yourself cloning a repo, making some proposed changes and then deciding to later contributing back using the GitHub Flow convention. Below is a set of instructions I've developed for myself on how to deal with this scenario and an explanation of why it matters based on jagregory's gist.
To follow GitHub flow you should really have created a fork initially as a public representation of the forked repository and the clone that instead. My understanding is that the typical setup would have your local repository pointing to your fork as origin and the original forked repository as upstream so that you can use these keywords in other git commands.
-
Clone some repo (you've probably already done this step)
git clone git@github...some-repo.git
-
Fork their repo on Github
-
In your local, rename your origin remote to upstream
git remote rename origin upstream
-
Add a new origin
git remote add origin git@github...my-fork
-
Fetch from new origin
git fetch origin
-
Set origin master
git branch --set-upstream master origin/master
git branch --set-upstream-to origin/master master
-
Push to fork (origin should be able to omitted given step 4)
git push origin
Using
git branch --set-upstream master origin/master
from step 5 today didn't work as it seemed to for me originally. This time I recieved the following error.Maybe I did something different. As an alternative I can explicitly state the remote when pushing my changes.