Skip to content

Latest commit

 

History

History
425 lines (221 loc) · 22.2 KB

Github使用指南.md

File metadata and controls

425 lines (221 loc) · 22.2 KB

Github 使用指南

Static Badge Static Badge Static Badge 访问量统计

转自知乎文章:【小白向】最新最详细的GitHub全站使用指南,稍作修改

本文是一篇面向全体小白的文章,图文兼备。为了让小白们知道如何使用GitHub,我努力将本文写得通俗易懂,尽量让刚刚上网的小白也能明白。所以各位程序员们都可以滑走了~

[TOC]

啥是GitHub?

百度百科会告诉你:

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

啊?托管平台?Git?这都是什么玩意?其实并不复杂,大家可别被这些名词吓跑了,广大程序员特别喜欢造一些很高大上的词语,但这些词语背后往往是相当简单的概念...

要知道GitHub究竟是干什么用的,我们必须知道GitHub的使用群体都有哪些。程序员,大学生,企业……都是GitHub的用户。这些人有一个共同的特点,就是:需要写代码

想象一下,你开发了一个软件,一开始很顺利。但后来你的好兄弟感觉这个软件不错,想要贡献点代码让它更屌一点。这时候问题来了,他在写代码的同时你也在写,他改完后把代码发给了你,你怎么知道他改了这个软件的哪些功能呢?怎么直观地看他改了哪些东西呢?怎么合并你的代码和他的代码呢?

如果后面又加入了几十个、几百个这样的好兄弟呢?如果又和你隔了十万八千里呢?

你将你的软件给大家用,大家都说好,但是就是有好多bug,通过什么渠道反馈呢?

这时候你的救星——GitHub,出现了,你将你的代码上传到了GitHub上,每一次改代码都标注好改动了哪些地方,添加了哪些功能,修复了哪些bug,这样就会使你的代码一目了然。

img

如果别人要改你的代码,只需要拷贝(Fork)你的代码,然后修修补补,最后再合并(Merge)进去。

img

如果别人要反馈问题,或者提出新的需求,只需要在问题(Issue)一栏里提问,就会有大佬帮你解答或者实现相应的功能。

img

(大雾,发错了)

应该差不多是这样的:

img

怎么逛GitHub?

在了解完GitHub的基本用途后,就可以看一下基本界面和功能了。

注册

首先点击注册链接,填入邮箱:

img

填入密码和用户名:

img

接着会有一个验证你是否是人类的环节,就是通常所说的验证码。

img

全部完成后即可创建账户,

验证好邮箱后GitHub会给你做个问卷,如实回答即可。当然也可以跳过哦。

img

接下来的主页就是这个界面啦。

img

你别看GitHub这英文很多,其实来来去去就这几个英文单词,记下意思就和中文差不多了。

代码界面

首先我们需要引入一个概念,叫“仓库”,英文名是repository,简称repo。仓库顾名思义就是用来放代码的。所谓代码托管,就是托管在仓库里面的。

下面就是一个仓库:https://github.com/microsoft/vscode

img

我们可以通过这个仓库了解到很多信息。

这个界面基本上每个地方都是可以点的……

img

star数量是我首先关注的点,在点star时,可以点击左边的下拉箭头选择你设定的不同栏目,所以star其实除了支持作者外,还有收藏的意思。

至于watch,其实要比star的人少很多,毕竟有谁希望提交个代码就要被通知一下呢?不过发布一个新版本还是有必要知道一下的,这样就可以体验最新版本。于是我们可以这样设置:

img

这样当vscode发布一些新版本的时候,GitHub就会发邮件通知你。

那如果我需要了解更多信息呢?那就需要看readme.md了。 所谓readme,其实就是仓库里的一个文件,叫readme.md(简称readme),然后GitHub自动识别了这个文件,直接在仓库页面显示了。

img

看完,我们可以可以知道(如果英文好的话)如何编译,如何下载,如何给vscode贡献代码等等。这样就可以对这个项目有更深入的了解。一个好的readme需要调理清晰,当然这不是我们小白需要考虑的事情了……

接下来讲一下什么是分支(branch)和标签(tag)。当你和队友们在写一个软件时,你的队友有不同的想法,如果他的想法不能说服你,他就可以直接做一个他的分支,这样你的代码因为他的想法就变成了两个分支。比如当年Vim和neovim,一个小伙子本来想给Vim做贡献的结果Bram没接受他的Pull request,于是小伙子直接Fork了Vim,成立了neovim,所以neovim其实是Vim的一个分支,当然这属于比较激进的做法。此外如果一个项目有一个长期维护版本(long time support简称LTS),那么也可以从仓库里分支出来,单独进行维护。

标签呢就很好理解了,就是你写着写着觉得这版代码很稳定很不错,就搞一个标签。通常来说tags就是版本号,在GitHub里,你可以找到代码的任何分支中的任何一个版本:

img

Issue界面

另外一个很重要的功能就是GitHub的issue了。 Issue可以干很多事情,包括给开发者反映bug,向开发者求新功能,包括小白求助等等。 我们点击上面代码界面上方工具栏的issue,就可以看到:

img

可以看出issue的检索功能和分类功能都十分强大,所以甚至还有在用issue写个人博客的程序员。。。

比如下面这个仓库:https://github.com/yygmind/blog

img

PR界面

Pull Request,就是你兄弟改完代码后给你提交的东西,简称PR。PR代表着新的功能或者bug修复,但要不要接受这些PR就要看仓库的拥有者你了。

PR界面长得跟issue界面非常像:

img

但我点进去一个PR,界面就完全不同了。

conversation就是提交者对自己PR的介绍,以及和开发人员之间的交流。

commits就是这个代码被分出去以后经历的提交过程。

比如下面这个PR,只提交了一次。

img

再看到file changed,就是详细地看到底改了哪些地方: 可以看到这位仁兄给extensionHostStarter.ts文件增加了一段代码:

img

至于Checks,就是GitHub的机器人干的事情了,这个不需要了解太多。

Wiki界面

Wiki即维基,就是项目的小型文档。这可不是一般项目都有的,只有比较大型的项目才有维基,比如vscode。vscode的维基是给专业人士看的,告诉人们应该怎么贡献代码,如何写vscode插件等等,但是也有的项目的维基是给用户看的,因项目而异。

img

insight界面

另外一个很重要的功能就是insight界面。这个给你了很多关于这个项目的统计数据,可以说是非常详细,你可以看到许多贡献者在这个项目里贡献了多少代码,什么时候贡献的。

img

这里我愿称之为:大佬列表

img

这是这个项目的Fork列表,看看都有谁抄袭(bushi)了这个项目:

img

其他栏目我就不一一列举了。

那么我能看到Fork列表,可不可以看star列表呢?答案是肯定的。入口就在项目主页中:

img

点开后就是:

img

release界面

release界面是一个项目最有用的界面了,可谓伸手党的温床,白嫖党的乐园。release就是发布的意思,一个软件稳定了,bug被修得差不多了就会到了发布的时候了。这时候大部分开发者就会把源代码(zip/tar.gz后缀的压缩文件)和编译好的软件都发布在这个页面,要用的话直接下载就行了。

此外我们还可以通过compare功能来比较不同版本之间的差异:

img

点进去以后GitHub给你详细地展示了两个版本之间经历了多少次提交,多少个文件改动,甚至哪些代码的增删都给你展示出来。

img

discussion界面

img

有的项目是有discussion的,是一个简易的论坛,里面有很多求助和公告等等。如果对项目有问题,就可以在discussion里发出来。

用户/公司主页

GitHub的用户分为两种,一种是个人用户,一种是企业用户。 比如这是Linus torvalds的个人主页

img

这些绿色的方块代表什么呢?就是你一天里提交的次数,包括提交issue/PR/代码等等,总之就是你给社区贡献的次数越多,你的方块就越深。当然每个方块都是可以点击的,下面的activity就会显示作者在这一天内的各种活动。

img

组织/公司的页面:

img

组织/公司的主页就和个人主页很不一样了。但是我们的主要关注点在repository那一栏里,就是微软这个公司创建的仓库:

img

可以看出巨硬不愧是巨硬,能同时维护这么多仓库,这几年对开源社区也贡献了不少。

explore界面

explore界面就在:https://github.com/explore

img

我这个号由于没有star任何仓库,所以它没有东西给我看。如果你经常star仓库的话,它根据你的偏好给你推送各种仓库,是不是感觉和某某社交软件操作一样(笑),但个人感觉这推送质量我不是很认可……

Topics就是一个仓库简介下面写的蓝色的类似于标签一样的东西,用于给仓库分类。

img

点进一个topic以后,它默认的排序就是Most stars,是完完全全按照star的数量进行排序的,

img

这样我们就可以进入一个topic,按star排序,就可以发现很多有用的仓库(轮子),我通过这一功能发现了许多好用的仓库,而且事实上仓库就是靠添加topic来曝光自己的(不然你怎么定位一个仓库)

接下来就是著名的GitHub Trending了,

img

GitHub trending,译作GitHub趋势,仓库/作者一天内被star的次数越多,越有可能进这个榜单。这个榜单有很多明星项目,可以当日报每日刷刷。当然也可以筛选/排序,甚至选择语言。

collection就是GitHub的官方选集了,里面有很多正在维护的精品项目,而且还做好了分类,值得一看。

如何参与贡献

说到参与社区建设,就不得不提markdown了。

Markdown

什么是markdown?它其实就是一个非常简单的语法,但可以让你打字更加方便,比如我这篇文章就是用markdown写的。markdown的流行GitHub简直功不可没,具体语法可以参考:https://zhuanlan.zhihu.com/p/270716843

强烈强烈建议各位学一下markdown,简直就是网页上的word,非常有用而且简单,5分钟就能学会。

创建仓库

首先需要配置一下token,进入Token生成中心

image-20240322230453341

然后会让你登陆确认一遍,接着就到了设置token的页面

img

其实只要选择repo就够用了,接下来点击generate token,一个token就生成好了,但注意这个只显示一次,要好好保存。

img

设置完token后就可以创建仓库了:

img

于是我们来到这个页面。

img

我新建了一个helloWord仓库,注意添加一下readme file,这样就可以创建一个仓库。

img

那如果我要改一下这个readme呢?注意这只是在GitHub这个网站上有这个仓库,而写代码则是在本地进行的,那么我们就需要将GitHub仓库和本地代码联系起来。所以git就闪亮登场了:

Windows用户可以安装git客户端,Mac用户可以通过homebrew安装: brew install git

具体安装方法可以百度一下,每个系统都不太一样。

接下来在cmd或者终端里执行:

$ git clone https://github.com/meIonhu/HelloWord
Username: 你的用户名
Password: 刚刚生成的token

这样你就在本地有一个名叫HelloWord的文件夹了。这个文件夹可不是一般的文件夹,这是已经初始化的git仓库。因为这个文件夹里有一个叫.git的隐藏文件夹,就是git的所有设置和你的提交记录。当然如果你把.git删掉的话这就跟普通的文件夹没什么区别了。

然后你可以在这里面一通乱改,最后将代码上传到GitHub:

git add .
git commit -m "对于这次提交你想说的话"
git push -u origin main

这三段命令下去,你的改动记录就会被上传到GitHub上面,你的仓库也能看到你刚刚的commit了。

进阶技能

Github gists

gist入口:

img

什么是gists?其实就是GitHub推出的一个小型的代码托管服务,它针对代码片段进行托管。比如你有一个很好的代码片段,需要时常用一下但写起来又麻烦,就可以用gists来备忘,gists还提供了很多丰富的标签等功能,帮助对代码片段进行分类。

img

Github搜索进阶

图形化的高级搜索入口:https://github.com/search/advanced

基本命令:

In修饰词:

xxx in:name:名字限定有xxx的仓库

xxx in:description:描述限定有xxx的仓库

xxx in:topics:在topics里有xxx的仓库

xxx in:readme:在readme里有xxx的仓库

用户限制:

user:example:获取所有来自example用户的仓库

org:example:获取所有来自example组织的仓库

size修饰词

size:>n:获取所有占用空间大于n kb的仓库

size:<n:获取所有占用空间小于n kb的仓库

size:n1..n2:获取所有占用空间在n1 kb到n2 kb之间的仓库

star修饰词size:>n:获取所有star大于n的仓库

size:<n:获取所有star小于n的仓库

size:n1..n2:获取所有star在n1到n2之间的仓库

license修饰词

license:apache-2.0: 获取所有license是apache-2.0的仓库

language修饰词

language:rails language:javascript:获取所有语言是javascript的匹配仓库

NOT关键词

NOT cat:排除所有含cat的搜索结果。

img

修饰词还有很多,但是基本语法大同小异,具体可以参考github文档

学废了嘛?让我们来实操一下吧~

很多同学会很好奇,GitHub star数top10的仓库是哪些呢?其实完全不需要爬取所有仓库,只需要简单地搜索一下就可以了:

在搜索栏键入:stars:>200000

img

就得到最受欢迎的仓库名单了。

GitHub快捷键

ctrl+K可直接打开命令栏:

img

默认是快捷跳转,或者搜索,我们通过键入>可以快速让GitHub执行我们的命令:

img

此外还通过g键可以快速跳转到各种地方:

g d:跳转到首页

g n:跳转到通知

g i:跳转到issue

g p:跳转到PR

g a:跳转到Actions

g b:跳转到Projects

g w:跳转到Wiki

g g:跳转到Discussions