Setting git for contributing
Recently, I have been trying to contribute more to open source and wanted to have a similar git workflows to my personal and professional projects.
To contribute to a Github Project, you would have to fork the repo, create and push branch with your changes, submit the PR. A few days later, if you want to make a new contribution you would then create a new branch again.
In a fork, fetching doesn't pull from the the original repo. It pulls from your forked version of the repo which doesn't update or change. This becomes a mental burden to remember to pull from the original repo and merge to your master.
Go to github and fork the the desired repository. This creates a clone of the repo under your user.
Clone the forked repos
Clone the repo locally
git clone [email protected]/username/example
Set upstream remote
Create a new remote pointing to the original repository. For the code snippet below, we named the original remote to be named upstream.
git remote add upstream https://github.com/source/example git fetch upstream
Set master of local to track upstream
.git/config so that the master branch follows the remote upstream. You can also change the source branch if the original repo uses a dev branch.:
[branch "master"] remote = upstream # This was origin merge = refs/heads/master # dev branch of original repo
or run the following command
git branch master --set-upstream-to=upstream/master
The end workflow would be identical to my current workflow for my other projects.
- Checkout master
- Pull from origin
- Branch out
or the equivalent
git commands would be
git checkout master git pull git checkout -B example-branch
Alternatively you can set up the remote, branch of the remote, and just pull from remote.
The workflow for that would be
git checkout upstream/master git pull git checkout -B example-branch