目录

Git介绍

Git 介绍

学习目标

  • 什么是Git
  • 版本控制是什么
  • Git发展史
  • Git工作机制
  • Git和代码托管中心

什么是Git

Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小到达的各种项目。

Git易于学习,体积小,性能快,它具有廉价的本地库,方便的暂存区和多个工作流分支等特性,性能优于Subversion(SVN)、CVS、Perforce和ClearCase等老牌版本控制工具。


版本控制

版本控制是一种记录文件内容变化,用来查阅一个文件特定版本修改情况的系统,最重要的是可以修改记录文件修改历史记录,从而让用户可以查看历史版本,方便版本切换

为什么需要版本控制?

因为在公司或一个组织大部分的不是单个人工作完成任务,而是组织团队一起完成任务。

两个人同时对一个文件进行修改,a修改了1,b修改了2,如果a先提交,b后提交,那么a的操作就会被b给覆盖,而文件只会保存最后一次修改的内容。git可以合并两者的修改。

版本控制工具

  • 集中式版本控制系统:

    SVN、VSS、CVS这些都是集中化的版本控制系统。

    集中化的版本控制系统,都有一个单一的集中的管理服务器,保存所有文件的修订版本,协同工作的人们通过客户端链接这个服务器,取出最新的文件或者是提交更新,多年前是常用的版本控制系统的标准做法,

    优点:每个人可以看到其他人在项目中做些什么。管理员也可以轻松掌握每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据来的容易。

    缺点:每个人修改好的代码都保存在中央服务器中,中央服务器单点故障,其他人则无法提交修改。

  • 分布式版本控制系统:

    Git、Mercurial、Bazaar、Darcs等等都是分布式的版本控制系统。

    分布式的版本控制工具,客户端提取的不是最新版的文件快照,而是把代码仓库完整地克隆到本地,任何一处协同工作用的文件发生故障可以用其他客户端的本地仓库进行回复,每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。

    优点:解决了集中式版本控制系统的缺陷,中央服务器端网情况下仍然可以进行版本控制,且每个客户端保存的也都是完整的项目。

    缺点:学习成本高,操作比较复杂。


Git发展史

Git由林纳斯托瓦斯开发Linux系统并开源代码后,一开始是Linus本人亲自合并他人修改的代码,后续1991-2002年一直如此,之后由于任务量和参与Linux开源的人数原来越多,需要一种更方便的合并方式,于是使用了商业版本控制软件BitKeeper,(BitMover公司)该公司授予Linux社区免费使用这个版本控制系统,但不允许破解,2005年Linux社区开发Samba的Andrew试图破解并成功,BitMover公司取消了Linux社区的免费使用权。此背景下,Linus使用两周时间用C语言开发了一个分布式版本控制系统:Git,一个月后将Linux系统代码并由Git进行管理,2008年Github上线,此后RubyJQuery等许多开源代码均在此托管。


Git工作机制

分为三个区域:

区域 说明
工作区workspace, 指的是我们写代码的地方,存放代码的地方
暂存区stage/index, 工作区的代码添加add到暂存区,临时存储
本地库repository, 暂存区提交commit到本地库,会生成对应历史版本

Git和代码托管中心

代码托管中心是基于网络服务器的远程代码仓库,一般称之为远程库,一般分为局域网和互联网类型。

  • 局域网类型:Gitlab
  • 互联网类型:Github、Gitee(码云)

总结