Github就是免费的午餐

BG83

Posted by Blue Geek on April 9, 2020

Github就是免费的午餐

By 青衣极客 Blue Geek In 2020-04-09

对于从事计算机软件行业的人来说,Github的大名恐怕是无人不知。不过,绝大数的开发者只是将Github当作寻找免费解决方案和代码的社区,而不是一个高效的优秀助手。Github的一个最主要的功能就是代码托管,托管的意思不仅仅是存储,还包括版本管理、多人协作等功能。几年以前,在Github上只有“public”的代码是免费的,但是现在,“private”代码托管功能也免费提供给大家。除此之外还有一大堆既免费又好用的的功能,说“Github是免费的午餐”可不是一句忽悠人的话。

1. 省心省事的托管

代码这东西不同于其他的文本,因为一段时间不见面你就很可能不认识它了。除了辨识度比较低,它还数量巨大,并且常常更新换代,这给维护代码带来了巨大的挑战。这时,我们就会需求一种解决代码管理问题的方案,以前那些古老的方案已经越来越不适应这个时代,于是Git横空出世。

Github托管的代码库

现在习惯使用Git的朋友可能觉得离线情况下添加代码是一件自然而然的事情,不过对于那些古老的工具而言,这可是一个魔术一样的技巧。很多人会觉得Git太过复杂,虽然这个说法表明了一些事实,但对于日常使用而言,高阶的命令基本用不上。那么,常用的命令有哪些呢?

(1) git clone

如果你没见过这个命令的用法,可以到Github上随便找一个项目点击“下载”按钮,就可以看见了。所以,这个命令的作用就是从远程仓库中下载代码的。如果有个人告诉你,他知道git clone的18种用法,千万别搭理他,因为那些东西对你基本没啥用。

(2) git pull

下载下来的仓库就放在本地,如果远程仓库更新了怎么办?这时,就可以使用git pull拉取新的代码。

(3) git add 和 git commit

很多情况下,除了阅读代码,我们还会添加或者删除一些代码。在修改了文件之后,使用git add .将那些修改加入的暂存区,确认没有问题,再使用git commit -m "feature info"将修改提交到代码库持久保存。如果你还想搞清楚其中的运作原理可以去搜索对应的讲解教程,但是很显然,在绝大多数情况下,你都不需要知道那么多。

(4) git push

以上的git commit指令只是将代码提交到了本地的代码库,如果你还需要将代码托管在服务器上,就是用git push origin master推送修改。

以上这五条命令就是最常用的命令,对于绝大多数的开发者,他们不需要跟别人合作,也不需要多个分支开发,他们只需要代码备份和版本回溯。那么,Github绝对是极佳的选择。本地的计算机随时都可能发生各种意外状况,甚至有时还会不小心把代码删了。如果有一份远程的仓库存储着这些代码,那么这些都不再是问题。有时如果新添加的功能存在缺陷,需要回溯到以前的版本,手动修改当然也是一个方法,但却并不是一个好方法。因为这很可能会添加新的修改,并不完全是回滚到之前的代码。

有的人会选择自己搭建Git服务器来托管,但这对于个人而言实在不是一个好主意。除了需要耗费成本,稳定性也会是一个问题。把代码托管的问题交给专业的团队,不仅能够减少出错,而且还比较能够扛住黑客的攻击,特别是这些还都是免费的。

2. 便利的多人协作

实际上,在开发真正具有工程价值的大型程序时,基本不太可能由一个人单独完成。在程序开发中加入各种角色也是保证项目顺利进行的一种有效的方法。Github除了代码仓库,还可以添加组织和团队来管理代码仓库。组织可以理解为公司,一个公司可以有多个团队,有的负责研发,有的负责质量测试,有的负责文档编写,有的负责管理等等。每个团队可以设置不同的权限,以保证工作有序和代码安全。

多人协作常常需要代码review,这样做有不少好处,(1) 当局者迷,旁观者清,另一个人往往能看出当事人看不到的bug;(2) 多个人都熟悉一段代码才能形成讨论的氛围,这对于优化升级是很重要的;(3) 在一段代码的维护人员出现意外或者休假时,其他人能够接手相关的工作,既为项目增加保险,也能保证开发人员的适度休息。

有过review代码经验的朋友可能会知道这并不是一种愉快的经历,所以,一个简单好用的界面就显得尤为重要,而Github就提供了这一功能。

Github的代码review页面

除此之外,Github还提供了Issue功能。如果你对代码中的某些问题有什么看法可以提Issue,如果你有新的想法也可以提Issue,这成为了一种推进项目向前发展的动力。

3. 免费的持续集成

Github推出了Actions功能,这一种持续集成(CI)的工具,也就是自动化完成编译、测试、打包、发布和部署的一种流程,而且是免费的。很难想象有人会土豪到送给你一台计算机,但是Github就是这么干了。理论上你可以使用这台虚拟机完成一些通用任务,但是强烈不建议这么做,毕竟吃大户这种事情总是容易一拍两散的。

Github提供的持续集成功能

这种自动化的持续集成工具可以避免开发者手动完成这些测试任务,降低质量测试人员的工作负荷,也为开发者剩下更多的时间和经历关注真正的问题。

4. 自由的个人博客

现在有很多的博客平台可供大家选择,但是这些平台无一例外都有严格的审核,而且排版和样式都无法自己做主。如果你是一个向往自由又怕麻烦的人,那么Github Pages无疑是目前一个很有吸引力的选择。Github推出Pages功能使用jekyll将markdown文件编译成静态的HTML网页文件,然后托管在Github的服务器上。我们在使用Pages功能时,可以自由地设置博客的表现形式和内容。如果你发现某个人的Pages博客页面很适合你,那就可以直接下载下来,然后把markdown文件和对应的图片替换成自己的就行。这种方式除了自由这种好处之外,还可以免除维护服务器的麻烦,因为所有的运行维护任务都有Github支持,而且还是免费的。

一个简单的Github Pages个人博客

提供了这么多的优秀的功能和设计,而且还免费,真是长这么大从来没见过这样的企业。不过这就是真真实实发生在我们的世界,如果不去好好利用这些资源,或者说不去占占便宜,还真有点对不起自己。

【青衣极客】公众号



COMMENT

博客评论区功能由Github Issue提供,提交Issue时请以本文标题为话题

"BG83-Github就是免费的午餐"