如何开始在 github 上学习东西？
下面从3个方面来回答楼主的疑问：github能用来干什么、github的正确使用姿势、github优秀资源推荐。 官网上对github的描述是：where the world builds software。不过上面不止有各种项目的代码，还有文档，书籍等等各种资料。能够进行代码协作、问题讨论、文档编写等操作。可以说，是程序员必备工具。 在github上我们可以参与到实际的开源项目中来，参与技术设计方案讨论，使用文档编写，或是核心代码编写。能给我们带来实实在在的好处。 作为新手，如何从0基础到实际参与到开源项目中来？ 0、开始前的准备工作 （1）挑选项目。建议从目前使用过的组件或库开始，因为对这些库的基础知识、使用已经有了大概了解。 （2）从哪里开始入手。建议从文档开始入手，因为不需要写任何代码，可以找文档中存在的小bug，来进行提交，借此熟悉提交流程。 对于git新手如下2个很棒的资料推荐给大家： Git quick reference for beginners：Git quick reference for beginners Git and GitHub videos for beginners：Git and GitHub videos for beginners 1、创建github账号 注册链接：Build software better, together 2、for项目仓库 进入项目的主页，点击fork按钮，这样就会在自己的github账户里创建一个副本。 3、将代码clone到本地 4、切换到本地代码目录。 5、设置remote 上图描述了各仓库间的关系（图侵删）。原始的项目是upstream remote，我们fork的项目叫origin remote。 正常情况下将fork的代码库clone到本地的时候会自动设置fork的分支为origin remote，可以使用如下命令check： 如果看不到origin remote，使用如下命令进行设置： 设置upstream  remote： 6、更新upstream到本地仓库 7、创建新分支 8、在本地修改代码或文档 9、提交 10、push修改内容到fork仓库 11、开始pull request 在fork仓库的页面可以看到如下： 12、创建pull request 要描述自己修改的内容，如果有关联的pr，要贴上链接。preview可以预览内容。准备好了以后点击Create pull request。 下图描述了整个流程： 13、review pr 创建好的pr在源项目仓库里可以看到，可以看到相关提交以及文件变更内容。 创建了pr依然可以再提交修改。在pr的下面comment地方可以进行讨论。 分支合并后就可以从fork仓库删除掉了。 14、更新源仓库代码到fork仓库 先更新到本地仓库: 然后push到origin remote：  下面给大家推荐github上优秀的人气开源项目，涵盖分布式、数据库、大数据计算、机器学习、前端以及技术发展路线、面经等等方面。 之前比较火的后端工程师发展路线： （1）分布式相关 阿里巴巴限流组件：alibaba/Sentinel RocketMQ消息中间件：apache/rocketmq dubbo:apache/dubbo 分布式事务seata：seata/seata netty:netty/netty （2）实时计算 flink：apache/flink flink-forward-china-2018：flink-china/flink-forward-china-2018 （3）工作流引擎 activiti：Activiti/Activiti （4）数据库 tidb：pingcap/tidb ---------------------------------- 我的一些其他高赞回答，感兴趣可以看看： 