本来以为一天完成的Git学习任务,用了三天勉强完成,真是拖延病入膏肓,不过还好没有拖到猴年马月,也算完成了一个小任务,那就上来好好的总结一番。
Git是什么我想有好多人听过但是不清楚,不过可能是我比较Low,直到现在才基本算入门吧,但是我相信还有好多不知道的,比如不是计算机专业的,好了废话不多说,我们一个问题一个问题来说一下!!
什么是Git?
先引用出官方的说法:
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Git is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows.
翻译一下就是:
Git是一个免费开源的分布式版本控制系统,其设计的目的是快速、高效的处理从小到大的各种项目。
Git很容易学习,占用空间小,执行快如闪电。它比其它版本控制台工具,比如:SbuVersion,CVS,Perforce和ClearCase具有更优的特性,比如简易的本地分支,便利的暂存区域和多工作流。
大概意思还是表达出来了,就是它是什么,它和同类产品相比,特性是什么。首先它是一个版本控制工具,这个概念学过软件工程的同学都听过,不过没实践过还是很难理解,我会以写大作业的例子作类比。特性就是快,小,强,怎么强还给出了具体的说明,分支,暂存和多工作流等,侧面的表达了其它同样类型工具的各种不足,比如占用空间大,速度慢,分支复杂切换分支慢,暂存不方便等等。
顺便说一句,我最初了解Git的时候是因为GitHub,编程的人应该都知道GitHub,上面有很多的开源软件项目,毕竟我们是面向API编程,那它和Git之间有什么关系呢?后面会简单说一下,除了国外的GitHub其实还有国内的Gitee(码云),这名字起的好。
什么是版本控制?
我以word为例举个例子,比如你在写毕业设计,你首先先建了一个word文档,叫作XXX毕业设计
,然后我们在里面一顿写,终于完成了初稿。
然后交给我们的导师去检查,但是导师看了十分不满意,这写的什么玩意,就这还想毕业……然后你需要对你的的毕业设计进行修改,你又怕改了之后以前的内容找不回来了,所以你将你的毕业设计备份了一份,把原来的版本叫做XXX毕业设计-初稿
,新版本叫XXX毕业设计-0.01
然后你在0.01版里面一顿乱改,之后再交到导师哪里?导师还是不满意,还不如第一版。。
你又在0.01版新建一个备份叫0.02,又在里面一顿胡乱增删改,你的文件夹变成了这样:
然后你一直进行这样的操作,突然你的导师和你说,我觉得你有一次给我看的有一个地方我觉的挺好的,你把它重新写上,你们说的你都记得,但是你就是不知道在那个版本了,这样又是一顿找,总之各种工作效率低。
以这样一个简单的例子类比了版本控制这个过程,但是实际的工程项目比这要复杂的多,一个版本和另一个版本之间的修改可能达到上百处,工程文件的复杂程度是不可想象的,此时版本控制就变得很必要。
那Git怎么学?
这里就需要祭出我的Git恩师廖雪峰老师了,他的Git教程我觉得最有条理,入门首选:
其次就是官方的教程了,多去逛逛必定好处多多:
学了用在什么地方?
首先Git的起源就是用于软件的版本控制,所以第一用途就是软件版本控制;
对于非开发人员来说,Git可以用于Office文档的版本控制,我亲测,Git是可以控制Office2016所产生的文档的,有一个需要注意的点是Git在分支切换的时候要关闭Office软件以解除文档的占用。
GitHub和Git什么关系?
如果已经认真学习了廖雪峰老师的教程,那我想这个问题已经明了,我这里只是用自己的话说一遍,Git最大的特点就是是它是分布式的版本控制系统,所以它的工作都是在本地的,如果有多人一起工作,那么使用GitHub这样的Git服务器只是充当一个交换的作用,每个合法的用户都可以向GitHub中push自己的修改,它其实还提供了一个源代码分享平台,可以这样说Git和GitHub极大的促进了代码的流通,它使全球的开发者连结在了一起。而现在微软收购了GitHub,这家全球软件巨头在开源的动作有目共睹,我相信它能很好的经营GitHub。
总结
Git能做很多事情,电子数据最大的优势就是其快速的更迭,这是很有利的,数据的易于产生和交换使的我们的生活在数字的影响下磅礴发展,互联网将人们与世界相连,这是人类文明的创举。而正如大家所知,万维网的发明人Timothy John Berners-Lee,并没有从他的贡献中获取利益,Linus Towards不仅发明了Linux而且发明了Git,这些人都是值得我们去尊敬和铭记的,代码是现代的魔法,能接触这个行业是我的幸运,希望自己能立足当下,以成为像他们一样的代码大师而努力。