GitHub入门指南

我去年入门 GitHub,一开始不知道从哪开始学,在网上查找了很多文章、教程学习。这篇文章就是以我刚学习时的小白视角写的,希望能帮助到想开始学 GitHub 又不知如何上手的学习者。

因为我也是初级水平,文中介绍的知识基于我自己的学习理解,如果有疏漏错误之处,欢迎您留言指正,谢谢!

新手小白可能会对 GitHub 有以下困惑:

1.GitHub 是个什么网站?

2.为什么一说学 GitHub,就听到人家说要学 Git?这两个有什么关联吗,是不是一回事?

3.听说 GitHub 是个开源社区,可以在上面与其他人一起切磋技术、完善代码,具体是怎么与别人交流呢?

下面,我从这几个方面进行解答。

一、带你浏览 GitHub 网站,看看都有些什么?

1. 注册账号

打开 GitHub网站,首页如下图所示,点击右上角Sign up按钮,进入注册页面。使用电子邮件注册,设置好用户名和密码,即可生成账号。完成注册后,点击旁边的Sign in按钮登录。

注册/登录页面

2. 登录 GitHub,浏览页面

登录进去后,我们见到的页面分成三大版块,如下图所示,从左至右依次为:自己的仓库(Repositories)、关注的人的动态、发现新的热门/有趣仓库。

登录后首页示例

可能的疑问:Repository? 仓库?是不是有点不好理解?

我在初学时也遇到这一困惑。“repository"有“仓库”的意思,我们可以理解成存放项目所需的各类文件的仓库。等熟悉了之后,你会发现 GitHub 上各种仓库都有,不是只包含程序代码,还有学习课程文档等等,难怪会叫仓库,哈哈。Repository(仓库)在 GitHub 上有重要作用,我们以后的很多操作都是在 Repository(仓库)中进行。

点击右上角的个人头像,在下拉列表中选择 Your profile 项,到达个人主页。下图所示为我的个人主页。

个人主页示例

你如果打开另一个人的主页,看到的界面风格也大致如此。我在图中简要注明了页面中的各项功能,此外:

  1. 点击账户名下方的Edit profile按钮,可以修改自己的个人信息,比如这里的一句话简介,公司、地址、联系方式等。而如果是别人的个人主页,这里我们看到的就是Follow(关注)按钮。
  2. 粉丝和关注的人数右边有个星星图标,这就是传说中的 Star。我们看技术文章可能常会遇到如“程序员必看!GitHub 上 Star 数过万的项目!”,“该项目在 GitHub 上迅速收获上千 Star 数” 类似的介绍,看来 Star 数是个很重要的标识哦!那么,Star 是什么意思呢?比如,我们觉得一个仓库不错,在右上角点个 Star,就相当于是收藏+点赞了,之后还可以在自己的主页中点击星星图标查看。

仓库页面-Star

  1. “Pinned"区域是自己的个人展示区,在自己的仓库中精选几个放到这里展示,让别人能很快发现你的闪光点。
  2. 活跃度表格:上面的绿色格子越多,颜色越深,说明该用户在 GitHub 上提交次数越多,是活跃用户。

二、GitHub 是 Git 软件用户的项目管理中心

1. Git

GitHub 之所以得此名,与一款分布式版本控制软件 Git 是分不开的。通俗地讲,Git 软件记录了你每次修改时的文件状态。更妙的是,如果你改着改着,又觉得以前的版本更好,还可以回溯呢,也就是说,有“后悔药”可吃了!同时, Git 也是一款极佳的协作软件。打个简单的比方,我和小红、小蓝三个人一起修改一篇文章,每个人改的地方可能都不一样,那么合并修改稿就是个头疼的事。或者,我先修改、再给小红修改、最后小蓝修改?这样效率又降低了。怎么办?用 Git,我们三个人可以建立修改分支,同时进行修改工作,最后合并分支。你可能会问,如果你们三个人在同一个地方做了不同的修改,还能合并吗?放心吧,软件考虑了这种“冲突”情况,有相应的解决办法。

既然 Git 可以协作,那总要有一个地方让使用的人们存放文件、修改等信息呀,就像控制中心一样,这样,GitHub 应运而生。这里多说一句,Git 的托管中心不是只有 GitHub 哦,GitHub 是方便个人用户、开源项目建立的网站。有的企业会自己搭建服务器和云盘构建托管中心,同样也是用 Git 软件进行协作管理。

那么,怎么用 Git 软件呢?

(1)先到 Git官网下载安装 Git 软件。

(2)安装成功后,选定一个文件夹,在右键菜单中选择Git Bash Here,会弹出一个黑色的命令行界面,输入语句,就可以在当前文件夹中运行 Git 命令。

这里推荐学习一下廖雪峰老师的Git教程,讲解得明白易懂,从中我们可以了解 Git 的各种操作。然后,跟着教程的讲解,自己建个新文件夹动手练练。

2. Git 基本命令

Git 命令还是挺多的,但是对新手来说,我们可以先掌握几个在 GitHub 上常用的 Git 基本命令

(1)提交修改:git addgit commit

git操作示意图,图片来自Git官网

上面的示意图来自 Git 官网,说明了 Git 中最重要的操作 “git add” 和 “git commit” 的工作流程。 Git 软件的核心是保存修改。working directory 是工作区,就是我们的电脑上当前工作的文件夹。staging area 可以理解成暂存区或者中转站,git add .(注意:这里 add 和.中间有个空格)提交了修改,放在 staging area 暂存,再通过 git commit -m"修改说明文字" 确定最终提交版。不要小看这个缓冲的暂存区,它为我们修改时提供了“后悔药”。这个效果就有点类似于我们平时在电脑上删除文件,文件不会直接删除,而是放到回收站中转一下。如果我们过后发现手抖误删了,还可以到回收站里把文件“还原”回去,或者确定都不需要了,就点击“清空回收站”,把这些文件都删除。

(2)与远程仓库同步:git pullgit push

在多人协作的情况下,比如前面提到的我和小红、小蓝一起写文章的例子,可能每个人的修改不一致,要保持同步。而我们要从远程仓库获取更新和推送自己的修改,就要用git pullgit push。前面提到的 git commit 是确定我自己最终的修改结果,git push 则是将这一修改结果提交到远程(比如 GitHub上)的 repository(仓库)保存。我始终记得廖雪峰老师教程里提的要点:每天开始工作的第一件事是 git pull,跟上项目最新的修改进度。结束一天工作、提交修改时,先 git pullgit push

(3)下载 repository(仓库): git clone

打开一个仓库,我们会看到Code按钮,点击后,下面出现 HTTPS 地址和 SSH 地址。我们只要复制了这个地址,然后在电脑上右键点击存放文件夹,打开 Git Bash 客户端,输入命令行:git clone 复制的地址,就能下载这个仓库到本地电脑。

下载仓库示意图

需要注意的是,用 HTTPS 地址需要账户验证。使用 SSH 地址只需要第一次时提交 SSH Key 到 GitHub ,后续无需每次验证,很方便,接下来就会介绍如何配置 SSH Key。

注:写这篇文章时,我也出现了一个困惑:不知道是否因为我已经用 SSH 验证了,我用git clone HTTPS 地址下载时,也没有要求输入账户名和密码验证。小伙伴们请把你们实践的结果告诉我一下呀,谢谢!

三、新手必备的GitHub基本操作

1. 配置SSH Key

(1)第一次使用时,要配置一下账户。

在 Git Bash 客户端,输入:

git config --global user.name "这里输入你在GitHub的账户名"
git config --global user.email "这里输入你在GitHub的注册邮箱名"

(2)检查是否已经有 SSH Key了,如果没有就生成一个。

同样在 Git Bash 客户端,先后输入:

cd ~/.ssh

ls

我的账户已经生成了 SSH Key,就有了下面所示的 id_rsa 和 id_rsa.pub 。请注意,id_rsa.pub 是公钥,后面要把这个公钥上传到 GitHub 上验证。id_rsa 是你自己的私钥,要保存好。

id_rsa  id_rsa.pub  known_hosts

如果没有 SSH Key,就要输入以下命令行生成:

ssh-keygen -t rsa -C "这里输入你在 GitHub 的注册邮箱"

生成后再输入上面的 cd ~/.sshls 命令,就可以看到 SSH Key 了。

(3)复制公钥。

接着在 Git Bash 客户端,输入命令行:

cat id_rsa.pub

这样会显示公钥文件内容,我们把它复制到剪贴板。

(4)把复制的公钥添加到 GitHub 账户安装。

登录 GitHub 账户,点击右上角个人头像的下拉菜单,如下图所示:

个人头像的菜单项

依次点击 Settings > SSH and GPG Keys,在 SSH Keys 页面右上角有个 New SSH Key 按钮,点击该按钮后,粘贴上刚才复制的公钥内容。里面的 “title” 项就是为自己的 SSH Key 命个名,可根据个人喜好随意。

(5)最后,检查一下 SSH Key 是否安装成功。

在 Git Bash 客户端运行命令:

$ ssh -T git@github.com

出现类似下面的提示,表示安装成功:

Hi Juliecodestack! You've successfully authenticated, but GitHub does not provide shell access.

2. 我的第一个 GitHub 项目:如何新建上传仓库

学了这么多基本功,我们终于要练手了,哈哈,先来建一个自己的仓库玩玩吧!

(1)在 GitHub 中新建仓库

如下图所示,点击个人主页的 Repositories 项,再点击右方的 New 按钮,新建一个仓库。

仓库页面-新建按钮

我这里做了一个简单的示范,如下图所示,你可以照着我的模板填,最后点击最下方的 Create repository 按钮,即可创建一个新的仓库。

新建仓库填写页面

打开新建的仓库,如下图所示,这个仓库的 Readme 文档的内容就是刚才填入的仓库名和说明。我们点击Code 按钮,复制 SSH 地址。

仓库页面-testexample2020

(2)把仓库文件下载到电脑。

假设我们要下载到电脑上的目标文件夹(为了描述方便,这里简称为文件夹 A),那么我们就右键点击文件夹 A ,在右键菜单中选择 “Git Bash”,在 Git Bash 客户端输入命令行:

git clone SSH地址

这样,仓库就会下载到文件夹 A 中。

(3)修改仓库文件,使用 Git 命令提交修改并推送至 GitHub。

下载仓库完成之后,我们会发现文件夹 A 中有了一个新的子文件夹,比如我在前一步骤下载了仓库 testexample2020,此时文件夹 A 中就出现了一个名为"testexample2020"的新文件夹,这就是下载到本地电脑的仓库。我们打开这个新文件夹(“testexample2020”),使用 VSCode 或 Atom 编辑器(编辑器的使用方法可参考我的文章:一篇文章带你入门Markdown),在 Readme 文件里增加一行: hello,world!。再新建一个 main.py文件,输入一行简单的代码: print("hello")

修改好了之后,我们右键点击文件夹 testexample2020(注意:此时不是在母文件夹 A 上使用 Git Bash 了),打开 Git Bash 客户端,依次输入命令行:

git add .

git commit -m"v0.1"

git push

这样修改就推送到了 GitHub 上的仓库中。

(4)登录 GitHub,查看一下仓库的变化。

登录 GitHub 后我们发现,刚才做的改动都同步到了 GitHub 仓库中,如下图中标示:

仓库页面-改动后

3. 和别人一起做项目:Fork 和 Pull request

前面提到过,GitHub 是个开源社区,我们可以参加到开源项目之中,那么,具体是怎么操作呢?

举个我自己的例子来说明一下这个过程吧。

(1)Fork 一个别人的仓库

我在学习 API 接口时,网上的微博 API 工具包很多是基于 Python2 写的,我在 Github 找到了一个 Python3 的版本 sinaweibopy3,如下图所示。我用了一下,觉得很好,看到作者没有写 Readme,我就想添加一个 Readme 说明文档,让别人能更快地了解这个仓库的功能和使用方法,也就是说,我想对这个仓库做一些修改。这种情况下,我就要先 Fork 一下这个仓库到我自己那儿。

sinaweibopy3仓库页面

为什么要 Fork 呢? Fork有“叉子”的意思,也就是从原仓库复制建一个我自己的分支(分叉),这样,我做的改动只是在我自己的分支上,不会影响到原仓库,除非我提交的 Pull request 被接受后。

Fork 之后,在我的仓库里就出现了一个相同的仓库 sinaweibopy3,如下图所示。不同之处在于,仓库名下方有个备注:“Forked from olwolf/sinaweibopy3”。

Fork的仓库

(2)对自己 Fork 的仓库做修改

接下来,我就对 Fork 的 sinaweibopy3 仓库做修改,添加了一个 Readme 文档。具体方法请参考上一步 “2.我的第一个 GitHub 项目:如何新建上传仓库” 的示例,可以先 git clone 下载到本地文件夹,修改后再 git push 推送到 GitHub。

(3)提交 Pull request

如下图所示,点击 Pull request,在弹出的界面填写一些信息,告诉原仓库的作者你做了什么修改、为什么要修改等,方便作者了解你对仓库的改动,然后提交,Pull request 请求就会发送至原仓库的作者。

Pull request示例

(4)等待原仓库的作者查看和决定是否接受修改。

提交了 Pull request 后,我们就等待一段时间,原仓库的作者会决定是否接受修改。

这里,仓库 sinaweibopy3 的原作者 olwolf 合并了我的修改,如图所示,这样原仓库中也增加了Readme文件。同时,我也因此成为了仓库贡献者 (Contributors) 之一。

接受Pull request后原仓库的变化

四、总结

完成以上学习,我们基本上就入门了,接下来,你可以自己在 GitHub 上探索一下,比如搜索发现一些有趣的项目,关注一些高手大牛,加入到开源项目中,等等。最重要的是,动手练习!一旦上手实践,慢慢熟悉之后,你会发现没有开始想象的那么难,一起加油吧!

最后,推荐几个好的学习教程:

1.GitHub 帮助页面

2.廖雪峰老师的Git教程

3.GitHub如何配置SSH Key