今天是2017年1月1日,我今天在我的空间中看到我的小伙伴们都在发今年的任务,那么我也不能落后是不,所以我今天也发表了一下我今年的任务。
我是一个刚刚入行不久的菜鸟,任务也比较简单。无非就是学Git、vim、Java和三大框架、数据库、Linux。
好了不扯别的了现在开始Git无聊的理论
啥是Git
Git是目前世界上最先进的分布式版本控制系统(没有之一)。
什么是版本控制系统?
版本控制是随着时间的推移来记录文件或文件集的变化。这样说有些抽象,下面我抄袭一个例子。
如果你用Microsoft Word写过长篇大论,那你一定有这样的经历:
想删除一个段落,又怕将来想恢复找不回来怎么办?有办法,先把当前文件“另存为……”一个新的Word文件,再接着改,改到一定程度,再“另存为……”一个新文件,这样一直改下去,最后你的Word文档变成了这样:
过了一周,你想找回被删除的文字,但是已经记不清删除前保存在哪个文件里了,只好一个一个文件去找,真麻烦。
看着一堆乱七八糟的文件,想保留最新的一个,然后把其他的删掉,又怕哪天会用上,还不敢删,真郁闷。
更要命的是,有些部分需要你的财务同事帮助填写,于是你把文件Copy到U盘里给她(也可能通过Email发送一份给她),然后,你继续修改Word文件。一天后,同事再把Word文件传给你,此时,你必须想想,发给她之后到你收到她的文件期间,你作了哪些改动,得把你的改动和她的部分合并,真困难。
于是你想,如果有一个软件,不但能自动帮我记录每次文件的改动,还可以让同事协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,岂不是很方便?
这个软件用起来就应该像这个样子,能记录每次文件的改动:
这样,你就结束了手动管理多个“版本”的史前时代,进入到版本控制的20世纪。
三个版本控制系统
本地版本控制系统
很多人选择的版本控制方法是将文件复制到另一个目录(可能是一个时间标记的目录)。这种做法是很常见的,因为这种方法比较简单,但它也非常容易出错。
为了解决这个问题,开发了一个具有保留所有变更文件的简单数据库。
一个比较流行的版本控制系统是一个名为RCS系统。
集中式版本控制系统
因为本地版本控制只能在我们自己电脑上进行控制,但是我们需要与其他系统上的开发者合作。所以就诞生了集中式版本控制系统。
这些系统,如CVS,Subversion和Perforce,都需要有一个中央服务器,客户只需要连接上服务器就可以编写工作。
但是这样也有坏处,例如服务器宕机那么我们将无法工作;或者服务器的硬盘变砖,我们将会丢失所有数据。
分布式版本控制系统
集中式版本控制系统必须要有一个中央服务器,所有用户只有链接到中央服务器后才能工作,分布式版本控制系统很好的解决了这一问题。
我们每个人的电脑都可以当作一个服务器来使用,这样你工作的时候,就不需要联网了。当然你可以搭建一台服务器,专门用来做项目的保存和版本的控制。