如何发现并参与开源项目
去年 6 月份,一个被广大程序员戏称为“全球最大同性交友网站”的 Github 网站,被微软收购了。
在当时 IT 界,这算是轰动一时的大事件。
因为 Github 不仅仅是一个编程工具,一个仓库托管网站,更是开源社区的核心。
据微软称,GitHub 拥有 2800 万用户,8500 万个代码库。
现在,开发工程师越来越喜欢在 Github 上写作,仓库的主题也不限于代码,例如购房踩坑记录、科技资讯周报、面试指南、书籍博客资源翻译、个人网站等。
Github 可以是个知识宝库。
那本文主要内容是介绍如何上手 Github 网站。
1.什么是 Github ?
Github 网站上有很多开源项目,每个项目都是一个 Git 仓库,而 Github 就是一个托管 Git 仓库的网站。
毫不夸张地说,Github 迄今为止世界上公开的托管开源项目最多、代码最全、涵盖技术生态最全面、聚集牛人最多的平台。
2.我们为什么需要 Github?
Github 本质上是个分享社区。所以我们可以把它当做个写作平台,记录自己编写的代码、记录自己学习的总结等。
如果输出的内容很有价值,会引起别人的关注并 start,自己会更有动力去创作,这是个正反馈的过程。
另外,自己在一些知名度比较高的开源项目上贡献过代码,或者自己有一些高质量高赞的项目,是面试的加分项。
如果只是单纯注册个账号,想在面试的时候“秀下肌肉”,最好打消这个念头。
3.版本管理
个人独立开发软件时代已经不复存在,现在软件开发都是团队协作。
在团队中,每个人可能负责某个或多个模块。
如果没有引入版本管理,某些特定代码改动导致项目出现异常,那排查问题就需要彻底审查整个项目,耗时耗力。版本管理的好处是经常性地保存着项目的改动,方便跟踪项目的改动。
版本管理有一些专门的版本控制系统,例如 SVN、Git 等。
SVN 是老牌的版本管理系统。
有些公司选择它是因为 SVN 有自带权限管理,能对不同的用户设置不同的权限。
如测试同学只有查看权限,开发同学拥有提交、查看等权限。但它有个缺点,它的需要保证代码服务器正常运行,一旦服务器挂了或数据丢失,则无法正常访问。
这是 SVN 本身是集中式版本控制系统所致。
Github 网站的版本管理使用的 Git,它是一个分布式版本控制系统。
既然是分布式管理系统,每个终端既是服务端又是客户端。那么理论上一台电脑拥有 Git 仓库,其他人都能随意拉取和推送。
但实际情况,很少在两人之间的电脑上推送版本库的修改。
所以,Git 通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改。
4.入门 Github
Github 网站的代码仓库都是远程 Git 仓库,所以需要先熟悉 Git 相关的知识。
如果你不熟悉 Git,可以去看廖雪峰大神的 Git 教程。
我们平时最频繁地操作也只分为两种,一种是从 Github 网站下载代码仓库地址到本地,另一种是对本地仓库进行修改,然后提交修改,最后推送到 Github 上。
克隆仓库到本地的命令
1 | git clone https://github.com/monkey-soft/SchweizerMesser.git |
如果你没有远程仓库,可以到 Github 网站上可视化创建下。当然,克隆的仓库可以是自己的,也可以是别人的。如果想在别人的项目中共享代码,需要在 Github 上 fork 别人的仓库,相当于自己基于当前版本新建一个分支。
提交修改并推送到远程仓库
如果远程仓库的拥有者是自己,可以先增加文件,然后再提交修改到本地仓库中;
1 | git add test.py |
最后才能推送到远程仓库
1 | # 先关联远程仓库 |
请求合并
如果远程仓库的拥有者是其他人,自己推送只是更新自己 fork 分支。如果想别人采纳自己共享代码,这时就需要使用 pull 命令。
1 | git pull <远程主机名> <远程分支名>:<本地分支名> |
现在的 IDE 工具都内置了 Git,如 Android Studio、Pycharm 等。当熟悉 Git 的工作流程之后,可以使用可视化操作。另外,Github 官网也推出了桌面应用 GitHub Desktop,同样也是可视化操作。
5.发现有趣的项目
Github 上项目成百上千,想在上面寻找自己需要的项目还真需要点技巧。
第一种办法是使用 Github 的探索功能
,点击“Explore”按钮。
在这之后,你会看到 Github 会根据自己的喜好等推送有一些项目。
第二种办法是关注一些活跃的 Up 主。
如果你向机器方向发展,可以关注这方面的活跃用户。
因为他们会经常发现一些高赞的项目,我们可以通过好友动态去了解。