教你玩转Github

Github是什么

GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。

GitHub 术语解释

GitHub 的常用术语,也可以说是基本概念:

Repository:简称Repo,可以理解为“仓库”,我们的项目就存放在仓库之中。也就是说,如果我们想要建立项目,就得先建立仓库;有多个项目,就建立多个仓库。

Issues:可以理解为“问题”,举一个简单的例子,如果我们开源一个项目,如果别人看了我们的项目,并且发现了bug,或者感觉那个地方有待改进,他就可以给我们提出Issue,等我们把Issues解决之后,就可以把这些Issues关闭;反之,我们也可以给他人提出Issue。

Star:可以理解为“点赞”,当我们感觉某一个项目做的比较好之后,就可以为这个项目点赞,而且我们点赞过的项目,都会保存到我们的Star之中,方便我们随时查看。在 GitHub 之中,如果一个项目的点星数能够超百,那么说明这个项目已经很不错了。

Fork:可以理解为“拉分支”,如果我们对某一个项目比较感兴趣,并且想在此基础之上开发新的功能,这时我们就可以Fork这个项目,这表示复制一个完成相同的项目到我们的 GitHub 账号之中,而且独立于原项目。之后,我们就可以在自己复制的项目中进行开发了。

Pull Request:可以理解为“提交请求”,此功能是建立在Fork之上的,如果我们Fork了一个项目,对其进行了修改,而且感觉修改的还不错,我们就可以对原项目的拥有者提出一个Pull请求,等其对我们的请求审核,并且通过审核之后,就可以把我们修改过的内容合并到原项目之中,这时我们就成了该项目的贡献者。

Merge: 可以理解为“合并”,如果别人Fork了我们的项目,对其进行了修改,并且提出了Pull请求,这时我们就可以对这个Pull请求进行审核。如果这个Pull请求的内容满足我们的要求,并且跟我们原有的项目没有冲突的话,就可以将其合并到我们的项目之中。当然,是否进行合并,由我们决定。

Watch: 可以理解为“观察”,如果我们Watch了一个项目,之后,如果这个项目有了任何更新,我们都会在第一时候收到该项目的更新通知。

Gist: 如果我们没有项目可以开源或者只是单纯的想分享一些代码片段的话,我们就可以选择Gist。不过说心里话,如果不翻墙的话,Gist并不好用。

搜索技巧

1、根据star,fork数筛选

例如我们在github上查找某个项目,评价其优秀与热门最直接的参数就是看这个项目被star(类似微博点赞,在个人主页可以查看自己点赞了哪些内容)了多少次,获得了多少认可,被fork了多少次(当你觉得这个项目不错时,可以fork这个项目源码到自己仓库中,但是在你仓库中存在的这个项目不会同步更新)。虽然一个优秀的项目不一定是star多,有可能暂时还没被其他人给发现,但根据这2个参数筛选却是我们简单有效的依据。

1, 大于等于

语法: 关键字 stars:>= 数量 forks:>=数量

例子:

 springboot stars:>=5000 
 //搜索springboot有关star数>=5000的内容
 springboot stars:>=5000 forks:>=5000
 //搜索springboot 的star>=5000,且fork数>=5000的内容

可单独搜索,也可组合搜索,中间用空格隔开,是&(且)的关系。

2、 关键字 in

搜索关键字在github上发布的位置 ,主要以下3个位置

  • name (发布的仓库名称)
  • description(指的是文章的摘要部分)
  • Readme (说明文档)

语法 :关键字 in:

例子 :netty in:name //查找名称中包含netty的内容

netty in:name,description

//逗号分隔,是 || (或)的关系,指的是查询名称,或者描述中包含netty的内容

3、awesome + 关键字

一般是指的学习,书籍,工具类,插件类相关的系列的集合。可以有效节约时间,找到别人收集好的内容。

awesome 指的是了不起的,碉堡了。

github 官方解释:

An awesome list is a list of awesome things curated by the community.

大致意思:社区组织维护的一系列非常棒的东西的集合。(差不多吧,哈哈,水平有限,谷歌翻译了解一下)

例如: awesome springboot

4、搜索某个语言,某个地区的大佬

例如: location:Beijing language:java

例如: awesome springboot

按键说明
s跳转到搜索框
t用于仓库内的文件搜索
l在仓库文件显示页,键入l后在弹处窗口输入行号,表示跳转到该文件的指定行
b查看文件改动进度
ctrl+k快速定位查看内容模块
.进入在线编辑器模式

在github上 按 ?可调出快捷键页面,有些对我们还是非常有用的。

快捷键页面链接如下:

https://help.github.com/en/github/getting-started-with-github/keyboard-shortcuts

  • 查看源码利器 t

在github 学习某个框架时,如果包的结构层级特别多,嫌一层层点进去麻烦,用 t ,该框架所有的类以列表形式平铺展开,方便查看

  • s 键 (search)

帮助快速聚焦在搜索框里,提高效率

6、 实现某行,某块代码高亮

在与其他人协作开发时,沟通时在给别人指出某行,或者某块代码,可以在github链接后面加上

1,#L23 //某行高亮

如:

https://github.com/unofficial-openjdk/openjdk/blob/jdk/jdk/test/jdk/sun/misc/GetSunMiscUnsafe.java#L36

7、user

查询某位用户的相关内容,比如某位大佬

语法:user:名称

例子:

user:ityouknow

2,#L23-35 //某个代码块

Bash

2,范围查询

语法: 关键字 stars:范围1..范围2

例子: springboot stars:4000..5000

//搜索star数在 4000到500的springboot相关内容,..相当于mysql中between and 的作用。

Bash

GitHub搜索资源常用前缀后缀

  • 找百科大全 awesome xxx
  • 找例子 xxx sample
  • 找空项目架子 xxx starter / xxx boilerplate
  • 找教程 xxx tutorial

无敌功能

键盘快捷键

在各个页面按下shift+/都可以打开键盘快捷键一览表,查看当前页面的快捷键。

Issue

在GitHub上,Issue可以作为开发者之间的交流工具;遇到下面几种情况时,可以使用此功能:

●发现软件的BUG并报告

●有事想向作者询问、探讨

●事先列出今后准备实施的任务

Pull Request

Pull Request是用户修改代码后向对方仓库发送采纳请求的功能,也是GitHub的核心功能。正因为有了这个功能,才会让众多开发者轻松地加入到开源开发的队伍中来。

Wiki

Wiki是一个使用简单的语法就能编写文档的功能。所有有权限的人都可以对文章进行修改,所以比较适合多人共同编写文章的情况。创建、编辑文档时不必另外启动软件,用起来十分方便,非常适合用来针对更新频率较高的软件进行文档等信息方面的汇总。

提升github速度的方法

  • 通过浏览器安装插件提升下载速度

通过下载Tampermonkey油猴拓展并下载Fast-GitHub脚本提升下载速度,脚本页面如下:

  • 通过翻墙软件实现快速访问以及下载项目

https://m.bjch110.com/

找开源项目的一些途径

在 github 中对项目进行搜索的时候,可以针对项目的 名称、描述、readme、star 数量、fork 中的内容进行精确搜索,下面条件可并行使用。

一、关键字出现的位置

1、出现在项目名中

in:name spring boot

2、出现在 readme 中

in:readme spring boot

3、出现在描述中

in:description spring boot

二、添加筛选条件

1、如果对项目的 star 数量也有要求,那么就直接在后面加上 star 的约束条件即可。加入需要筛选 star 数大于 50000 的项目

start:>50000

2、筛选 fork 数也是同理,筛选 fork 数量大于 1000 的项目就在后面加上

forks:>1000

3、限制编程语言

假如需要查找项目名中为 Spring Boot 并且项目主要编程语言是 python 的项目,只需要在后面添加 language:python

language:python

4、限制最后一次更新的时间

需要找到一些较新的项目,就需要添加筛选最后一次 push 的时间的条件,假如需要查找最后一次提交在 2021 年 7 月 1 日之后的项目,就需要在后面添加

pushed:>2021-07-01

参考资料

Git基本操作

https://mp.weixin.qq.com/s/sdFw9kzidrOeWZA0BOSUcA Git的介绍 最先进的分布式版本控制系统 可记录每次文件改动 C语言开发 强大的分支管理...

Github同步fork项目

说明 在github上fork了一个项目,之后原作者又更新了内容,想把原作者更新的内容同步到fork的项目仓库中,以下是同步步骤。 同步步骤 首先打开自己...

一套教程精通Git

1.学习目标 了解Git的基本概念 能够概述Git的工作流程 能够使用Git的常用命令 熟悉Git的代码托管服务 能够使用idea、pycharm来操作Git ...