在Python之禅和他朋友们圈里发现有一部分人还不知道如何使用GitHub,贡献代码,这篇文章整理了一个完整的步骤,手把手交你如何操作。
一:先从GitHub Fork 一份代码到自己的帐号中
假设 pythonzhichan/DailyQuestion 就是我们将要给它贡献代码的开源项目,
Fork完成后,可以在自己的 repositories 列表中看到该项目。
二:Fork项目克隆到本地
把Fork后的项目clone到本地,注意这里选择的是 “Use SSH”,而不是 “Use HTTPS”,或者在你push代码的时候每次都要输入GitHub帐号密码,而使用 SSH 只要你配置好了 SSH keys,就不需要每次输入帐号密码了。(关于如何配置SSH-Key参考文末链接)
git clone git@github.com:thezenofpython/DailyQuestion.git
项目成功clone下来,检查是否有了DailyQuestion目录
三:配置上游项目地址
配置上游项目地址的目的将来如果原来那个项目pythonzhichan/DailyQuestion有代码更新时,我们需要把它最新代码合并到我自己的Fork的项目中,这样才能保持代码同步,否则你的项目永远停留在Fork时候的版本。
切换到项目目录:
cd DailyQuestion
假设原项目是 git@github.com:pythonzhichan/DailyQuestion.git
git remote add upstream git@github.com:pythonzhichan/DailyQuestion.git
这里的 upstream
就是我们上游项目地址的别名,待会儿就是从这个项目中去拉最新的代码。
四:创建一个 Pull Request
现在假设你在本地项目中修改了代码,新增了文件,当我们把代码push到Github之后,你就可以在GitHub发起一个Pull Request了,告知原项目,我修复了一些Bug,更新了某些特性,请把我的代码合并过去吧。
新建一个 Pull Request,如果GitHub发现你的代码和原项目差异,那么就可以成功 Create Pull Request。这样原项目的负责人就可以收到你的Pull Reuqest了。然后就等着他审核、合并代码,审核通过之后,你的代码将被正式合并到他的原项目中去。 df
五:合并开源项目最新代码到自己的Fork项目中
1、获取上游项目更新
git fetch upstream
2、合并到本地分支
git merge upstream/master
3、提交推送
git push origin master
这样你的代码就和原项目的代码保持同步了。
总结
这里出现了好几个名词,包括 origin, master, upstream ,一图胜千言。
- master:其实就是你的本地(Local)项目(在你自己电脑里面)
- origin:是你GitHub上Fork的远程项目(托管在GitHub上项目,属于你自己的)
- upstream: 别人的开源项目,origin项目最开始就是从那fork过来的。(托管在GitHub上项目,属于别人的)
在仔细看看这三者之间的关系(箭头指向),fetch 命令可以直接把开源项目代码抓到本地来再合并(merge),push 命令是把本地代码推送到远程GitHub上自己的那个Fork项目中去。如果要把自己的代码合并到开源项目中去,就需要在GitHub中发起 Pull Request,再由开源项目负责人把你代码进行合并。
参考链接:
关注公众号「Python之禅」,回复「1024」免费获取Python资源