DevOps系列文章之 Git知识大全

Git是由LinusTorvalds创建的分布式版本控制系统,因Linux代码管理需求而生。Git提供了高效的版本管理和分布式特性,使得每个开发者电脑上都有完整项目副本,即使无网络也可工作。GitHub是一个基于Git的代码托管平台,而GitLab则是一个可自建的开源项目管理系统,两者都支持代码托管和版本控制,但GitLab更注重私密性和企业级功能。

1、Git诞生的历史

  • Git的定义

    • Git是当下最先进的开源分布式版本控制系统,可以高效便捷地管理大大小小的项目版本
    • 所谓的分布式,按我的理解就是主要专注于字,分开,分离,把某些事物分开布置在各个角落上,分布式版本控制系统不把相应的版本项目集中在一个电脑/服务器/中央服务器上,而是每个人的电脑都保存着一个完整的版本项目。
    • 所谓的版本控制系统,通俗地说就是对一个或若干个文件的内容改动情况按照特定的版本号进行保存,以便将来浏览者快速清晰了解文件的改动信息(内容变化信息,内容改动时间,作者等)
  • Git的缔造者(father)

    • 名称:Linus Torvalds 林纳斯 托瓦兹 芬兰人 现受聘于开放源代码开发实验(OSDL:Open Source Development Labs, Inc)
    • 他的自传《乐者为王》just for fun 都说一般吊炸天的大牛之牛
  • Git的诞生史

    • 1991年,Linus创建可谓统治服务器的操作系统-Linux系统,由于它的快速发展Linux的代码管理成为一个大难题
    • 2002年以前,Linus其实都是通过手工方式合并世界各地开发者提交的源代码
    • 2002年,名为BitMover的这家公司出于人道主义精神免费提供BitKeeper商业版的版本控制系统的使用权
    • 2005年,但由于Linux秀儿众多,开发Samba的Andrew试图Crack BitKeeper的协议,被BitMover公司发现了,于是BitMover公司怒了,要收回Linux社区的免费使用权
    • 不让用便自己搞一个,Linus便花费10天的时间用C语言开发了Git,往后时间,Linux的源码都是用Git管理。
    • 2008年GitHub网站上线,为开源的项目免费提供Git存储。

2、Git的版本控制系统

  • 本地版本控制系统

    • 第一代版本控制系统被称为本地版本控制系统。通过加锁将并发执行转换成顺序执行。 一次只能有一个人处理文件。具体流程如下:首先,应该把文件放在一个服务器上,方便使用者上传或下载文件;其次,任何人想对文件修改时,需要先把这个文件加锁,通过checkout指令,使得其他人无法修改;最后,当修改完成之后,需要释放锁,通过checkin指令,形成一个新的版本,存放到服务器端。第一代版本控制系统主要有 RCSRevision Control System )、SCCS。

    • 硬盘上(本地,local computer)保存补丁集(文件修订前后的变化),通过所有的补丁,可以计算出各个版本的文件内容,大多都是采用某种简单的数据库来记录文件的历次更新差异。

集中式版本控制系统

  • 第二代版本控制系统被称为集中式版本控制系统(Centralized Version Control Systems,CVCS),其对同步修改更加宽容,但有一个明显的限制,用户必须在允许提交之前将当前修订合并到他们的工作中。不便之处就是要联网,若中央服务器发生单机故障,宕机了,那么在这宕机期间谁都无法提交更新,也就无法协同工作,还有中央服务器丢失数据的可能等。

  • 由下图可看到,在集中式版本控制系统中,如果服务器嗝屁了,那么所有的开发者就只能干瞪眼了!因为,SVN 对于项目的管理是依赖于服务器中的中心仓库的!我们的更改必须要提交到服务器中的中心仓库。第二代版本控制系统主要有 CVSSubversion、SourceSafe、Team Foundation Server、SVK。

 

分布式版本控制系统

  • 第三代版本控制系统被称为分布式式版本控制系统(Distributed Version Control Systems,DVCS),其允许合并和提交分开。在每个使用者电脑上就有一个完整的数据仓库,没有网络依然可以使用。

  • 由下图可看到,分布式版本控制系统也可以有个服务器端的仓库,用来同步各开发者的私有仓库。在分布式版本控制系统中,每个参与者的本地也会有一个完整的仓库。及时服务器端崩溃,我们仍然可以使用 Git(仅在本地仓库管理我们的代码),在网络具备时,再和服务器进行同步即可!第三代版本控制系统主要有 Bazaar、Git、Mercurial、BitKeeper、Monotone。

思考:

  1. 怎么理解分布式与集中式?(廖雪峰老师给出的理解)
    • 集中式:版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
    • 分布式:分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。
  • SVN与GIT的特性对比:

    特性SVNGIT
    架构模式集中式分布式
    安全性较差,定期备份高,开发者本地电脑就是一个完整的版本库
    适用性文档管理,代码管理,
    易用性简单上手,对新手友好上手困难,学习成本高但效率搞
    灵活性较低,易发生单点故障,拉取分支高,单机本地操作,多个备份,本地新建分支
    权限管理拥有严格的权限管理尚无严格权限管理,有账号角色划分

3、Git与Github、Gitlab

  • GitHub

    • GitHub是什么?
      • 百度百科上的定义是:面向开源以及私有软件项目的代码托管平台,只支持git 作为唯一的版本库格式进行托管,故名GitHub。
      • GitHub是一个代码托管云服务网站,帮助开发者存储和管理其项目源代码,且能够追踪、记录并控制用户对其代码的修改。甚至可以把它当作存储代码等的网盘,用来存储任何东西。
    • Github与Git的关系?
      • GitHub不等同于Git,二者完全是不同物,不能搞混,类似地,捋一捋java与javascript、周杰与周杰伦的关系,或许你能从中领悟到一些真谛。
      • Git只是一个命令行工具,一个分布式版本控制系统。正是它在背后管理和跟踪你的代码历史版本,好比一个时光机,让你在代码出错时不至于手忙脚乱,能快速回退之前的历史版本。
      • GitHub是一个代码托管网站,背后使用Git作为版本管理工具(而非svn)。主要服务是将你的项目代码托管到云服务器上,而非存储在自己本地硬盘上。
    • GitHub能做什么?
      • 托管代码,管理项目的历史版本
      • 查找查看开源项目的介绍及源码等
      • 使用GitHub Pages更能,能够搭建属于自己的个人博客
      • 分享技术心得、项目等,在线交流,提升自己的影响力
  • Gitlab

    • Gitlab是什么?
      • GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务(在线代码仓库管理软件)。
    • Gitlab与GitHub的区别?查看对比
      • GitHub上存放的项目是面向世界开源的,若想存放私人仓库,得交钱,交钱使你的项目变得更隐私
      • GitHub是在线代码仓库,全世界只有GitHub一家,大家把代码存储在人家的服务器上
      • GitLab比较私密,用于企业、学校或者个人的代码托管库
      • Gitlab相当于小型的GitHub,你可以在本地搭建一个属于你自己的类似GitHub仓库,让小伙伴把代码存储在上面,这样代码只有你们几个人能看见,但是你要存在GitHub上,全世界都能看见
    • Gitlab能为我们做什么?
      • Git仓库管理、代码审查、问题跟踪、动态订阅、wiki等功能,GitHUb能做的Gitlab也能做(99%)。
  • 国内代码托管平台

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder_Boy_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值