- Published: November 10, 2016
Simply guide to contribute to any project in Github. The basic workflow consist of
- Fork the repository
- Make a fix or contribution
- Submit a pull request to the original project
A fork is a copy of a repository. Forking a repository allows you to freely experiment with changes without affecting the original project.
Go to the project you want to contribute and press the Fork button.
That will generate a copy of the repository in your Github profile where you can work with the code.
In this example I will fork the following repo: https://github.com/housed/feedr
Clone the forked repo
Make a local copy of the forked repo with
$ git clone https://github.com/marcanuy/feedr.git Cloning into 'feedr'... remote: Counting objects: 65, done. remote: Total 65 (delta 0), reused 0 (delta 0), pack-reused 65 Ricezione degli oggetti: 100% (65/65), 178.73 KiB | 282.00 KiB/s, done. Risoluzione dei delta: 100% (22/22), done. Checking connectivity... fatto. $ cd feedr feedr$
Configure the original repo as a remote
Having the original repo as a remote makes it possible to keep your code up to date with all the contributions made to the original repo and contribute your own code.
The convention is to name this remote repo
feedr$ git remote add upstream https://github.com/housed/feedr.git feedr$ git remote -v origin email@example.com:marcanuy/feedr.git (fetch) origin firstname.lastname@example.org:marcanuy/feedr.git (push) upstream https://github.com/housed/feedr.git (fetch) upstream https://github.com/housed/feedr.git (push)
Create a branch
Create a topic branch where you fix or improve the code and move to that branch.
$ git checkout -b fix-indentation Switched to a new branch 'fix-indentation'
Create a branch with new changes
After working in the new branch, making some changes and commits,
push the new branch,
fix-indentation in this case, to your Github
$ git push origin fix-indentation Counting objects: 4, done. Delta compression using up to 2 threads. Compressing objects: 100% (4/4), done. Writing objects: 100% (4/4), 367 bytes | 0 bytes/s, done. Total 4 (delta 2), reused 0 (delta 0) remote: Resolving deltas: 100% (2/2), completed with 2 local objects. To github.com:marcanuy/feedr.git * [new branch] fix-indentation -> fix-indentation
Create a pull request
Now your changes are in a new branch in your Github repo, it is time to make a pull request to merge your changes in the original repo.
The Github repo webpage shows:
Your recently pushed branches: fix-indentation (less than a minute ago)
and makes it available a button to send the Pull Request.
After pressing the Pull request button, the webpage redirects to Open a pull request page, after selecting the base fork and the head fork, you can make the pull request.
Now just wait to the repo owner to merge your fixes.
marcanuy wants to merge 1 commit into housed:master from marcanuy:fix-indentation