![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1664948813823/xv9-R06FN.png?auto=compress,format&format=webp)
- Go to a open source project of your interest and press the fork button
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1664948880291/rYGioJgVK.png?auto=compress,format&format=webp)
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1664948959371/TTL3NVEAv.png?auto=compress,format&format=webp)
- Press Code button and copy the url
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1664949043078/0oX3oqZjH.png?auto=compress,format&format=webp)
- Now go to your IDE. Here I will use VS Code
git clone "copied url"
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1664949493823/Yq9Fjja2A.png?auto=compress,format&format=webp)
- We can see that everything is cloned into the local repository
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1664949551971/f9jEYa_xq.png?auto=compress,format&format=webp)
How to update my local repository
- if other open source contributors make changes, then I will need to update my local repository
- Otherwise there will be a conflict when I ask for pull request
![step-2-1-conflict.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1664949689315/xm5riTTOW.png?auto=compress,format&format=webp)
- Go to the original project repository and copy the project url
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1664949807931/ectGyznTcM.png?auto=compress,format&format=webp)
- Now go to your IDE terminal and type this
git remote add upstream "original project repository url"
# git remote -v shows remote repositories connected to your local repositories
git remote -v
- So it seems like original repository url is already there
- Now we can bring any recent changes made by other contributors
# bring latest updates from 'upstream'
git fetch upstream
# go to the branch you want to update
git checkout master
# merge the latest update and my changes
# git merge remote repository/my branch name
git merge upstream/master
# update my local repository
git push origin master
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1664950386164/lpI0o5jGP.png?auto=compress,format&format=webp)
Make a branch and Contribute
- instead of using master or main branch, it's better to make a branch to show what issue you are trying to solve
git checkout -b "branch name"
git branch "branch name"
git checkout "branch name"
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1664952945331/T9I9XSSmm.png?auto=compress,format&format=webp)
- Commit and push your changes
git add
git commit -m "Add visual studio code for code editor"
git push
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1664953544781/szpu8hYAr.png?auto=compress,format&format=webp)
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1664953749705/o0jPKbLKc.png?auto=compress,format&format=webp)
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1664953789734/Y7dXZdeSC.png?auto=compress,format&format=webp)
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1664953847633/_HzGa4leh.png?auto=compress,format&format=webp)
- Press Create pull request button and it's all done!
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1664953955771/15Ib6go23.png?auto=compress,format&format=webp)
- All you have to do is wait to see if your pull request is approved