国庆还剩几天,一起来学一项高端的技能。
前言
每个人应该都有这样的经历:在写文档(尤其是毕业论文)时,每做一次修改,都要单独保存为一个版本。如果只保留最新的一个,然后把其他的删掉,又怕哪天会用上。
改动的次数多之后,就有了下面的各种版本:
- 毕业论文.doc
- 毕业论文改1.doc
- 毕业论文改2.doc
- 毕业论文完成版.doc
- 毕业论文最终版.doc
- 毕业论文最最终版.doc
- 毕业论文绝对不改版1.doc
- 毕业论文绝对不改版2.doc
- 毕业论文打死不改版.doc
- 遗书.doc
最要命的是:过了一段时间,你想找回被删的文字,但是已经不记得放在哪个版本的文档里了。
我想,如果工作当中,人人都采用这种简单低级的方式,那简直不能容忍。
这种低效率的事情,经历一次就好。现在,团长要教你一项高效科学的技能,叫“版本控制”,让你既能够只关注最新版本的内容,也能够游刃有余地切换到任何一个历史版本。
本文适合哪些人学习
「版本控制」这项技能,已经非常成熟且非常普及。但对于刚入门甚至从来没有听说过它的人来说,会有点难(meng)度(bi),为了照顾到各位读者,我需要做如下声明:
如果你是文科生,为了学会这项技能,你需要非常大的勇气。
如果你是理工科生,建议尝试。
如果你是一个开发人员,日常工作涉及到写代码,那这项技能是一定要掌握的。
总结一句:如果真有那么容易学的东西,那还怎么体现出它的相对价值呢?
版本控制工具:SVN & Git
既然要做版本控制,那肯定要借助一些工具来操作了。说白了,就是需要先安装特定的软件,然后借助这个软件来进行版本控制。
现在主流的版本控制工具有两种:「SVN」和「Git」。我先把这两个工具做简单的介绍(如果有听不懂的名词,请保持耐心)。
SVN 是属于集中式版本控制系统。版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
Git 是分布式版本控制系统。它在离线时也能正常使用,这样使得开发人员可以随时提交代码,在联网时同步一次即可。同时,Git强调个体,有着速度快、出色的合并追踪能力等特点,加上开源社区对它的不断完善,使得Git越来越流行。
「SVN」和「Git」这两种工具,从目前的使用人数比例上来看,势均力敌。不过,「Git」作为后起之秀,已经慢慢开始要撼动「SVN」的老大哥地位了。在今后,「Git」将继续红旗招展,大放异彩;而使用「SVN」的人则越来越少。
如果你是新手,只用学「Git」就够了,因为它是主流。即使你日后的工作不得不接触到「SVN」,那也没有关系,知识都是相通的,你会很快上手。
下面介绍一下「版本控制」的几大特点(均以 Git 为主)。至于具体要怎么学会它,稍后会提到。
修改无数次,只需关注最新的版本
安装了Git软件之后,它能自动帮我记录每次文件的改动,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,从此以后,再也不用手动管理多个版本了。
你当前正在编辑的版本是“最新版本”,而“历史版本”是被保存到Git软件里面的。你可以通过Git 软件回退到任何一个历史版本,也马上回到最新的版本。还能对比查看各个版本之间的内容差异。
程序猿在写代码的时候,应该深有体会吧。用上这一招,关键时刻是可以救命的。在没有用Git保存版本的情况下,本来已经完成了一个小功能,于是啥也没想,接着改进,改着改着,出bug了,然后想回到之前的正常版本。艾玛,就是回不去了…
多人协作和分支管理
如果某个文档只由你一个人来完成,那只需要用到上一段提到的内容即可。可如果这个文档需要多个人协作完成,那肯定就要用到Git软件了。
这个很好理解,在公司里,一个项目那么庞大,不可能完全由你一个人来完成。即使你作为全栈工程师有这样的能力,那也没有这样的时间和精力。
另外,假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。
现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。
多人协作和分支管理,也正是 Git 的最大的作用。
GitHub网站:代码托管网站
随着Git的流行,GitHub这个代码托管网站也就应运而生了,网址是「www.github.com」,它为使用Git做为版本控制的软件项目提供代码托管服务,同时注入了社交网络的属性。号称是世界上最大的程序员(同性)交友网站:
简单的说,在GitHub上面,你可以提交你自己写的代码(发微博)、关注(粉)某人、关注(赞)某个项目、添加评论、Fork(转发)一个项目来自己修改,这些功能和微博都是一样的,只是将我们的吐槽换成了由各种编程语言写的代码。我们平时见到的大部分开源代码也都是挂在上面的。
GitHub不仅可以用来托管代码,还可以用来写博客,这个逼格就有点高了,各位可以自己研究研究。
其实GitHub还是一个招聘网站。很多互联网公司的HR都在抱怨,现在招人难,招个靠谱的人更难,于是有的 HR 就去GitHub上逛逛,找到那些符合自己招聘方向的程序员,点开他们的个人页面逐个查看,他们平时的编程水平、代码质量、协作能力都一览无余的展现在面前,这可比花里胡哨的简历强多了。
学习Git的资源
要入门Git,最好的Git图文教程当属「廖雪峰」讲的内容。官网链接是「www.liaoxuefeng.com」。大家点击[阅读原文](http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000)也可以看到这个教程的链接。
有些童鞋可能喜欢看视频教程,这个也没有问题。在公众号后台回复“Git”,给你看团长认为的讲得最好的Git视频教程。这个视频教程的作者为了模拟团队协作,用自己的电脑扮演唐僧,然后开了个虚拟机扮演悟空,真的是很有心。不过,视频是1080p的,比较清晰,如果你的电脑屏幕比较小,可能不太适应。
上面的这个视频教程,讲得很详细,所以内容很长。如果想看精简版的 Git 视频教程,可以看黑马的Git视频教程,同样是在后台回复“Git”。
补充一句:Git版本控制是通过命令行进行操作的,你也可以安装 GUI 软件来代替命令行操作,团长推荐「TortoiseGit」或「SourceTree」。
最后一段
现在,Git 版本控制的作用告诉你了,该怎么学、从哪里学也有了。要不要提升自我,就靠你自己啦~
题图 from 生命壹号
摄于中英街(位于深圳市盐田区)。小女孩儿的一只脚还在香港,另一只脚准备踏进大陆。
参考链接
本文于2016-10-05原创首发于微信公众号「千古壹号」。欢迎有心人关注,学习更多知识和技能。