首页 >开发工具 >git >git属于什么版本的控制系统

git属于什么版本的控制系统

WBOY
WBOY原创
2021-12-01 19:33:383329浏览

git属于分布式版本控制系统。Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开源的分布式版本控制软件,用以有效、高速的处理从很小到非常大的项目版本管理。

git属于什么版本的控制系统

本教程操作环境:windows7系统、mysql8.0.22版本、Dell G3电脑。

git属于什么版本的控制系统

git是分布式版本控制系统。

Git具有以下特点

  • Git中每个克隆(clone)的版本库都是平等的。你可以从任何一个版本库的克隆来创建属于你自己的版本库,同时你的版本库也可以作为源提供给他人,只要你愿意。

  • Git的每一次提取操作,实际上都是一次对代码仓库的完整备份。

  • 提交完全在本地完成,无须别人给你授权,你的版本库你作主,并且提交总是会成功。

  • 甚至基于旧版本的改动也可以成功提交,提交会基于旧的版本创建一个新的分支。

  • Git的提交不会被打断,直到你的工作完全满意了,PUSH给他人或者他人PULL你的版本库,合并会发生在PULL和PUSH过程中,不能自动解决的冲突会提示您手工完成。

  • 冲突解决不再像是SVN一样的提交竞赛,而是在需要的时候才进行合并和冲突解决。

  • Git 也可以模拟集中式的工作模式

  • Git版本库统一放在服务器中

  • 可以为 Git 版本库进行授权:谁能创建版本库,谁能向版本库PUSH,谁能够读取(克隆)版本库

  • 团队的成员先将服务器的版本库克隆到本地;并经常的从服务器的版本库拉(PULL)最新的更新;

  • 团队的成员将自己的改动推(PUSH)到服务器的版本库中,当其他人和版本库同步(PULL)时,会自动获取改变

  • Git 的集中式工作模式非常灵活

  • 你完全可以在脱离Git服务器所在网络的情况下,如移动办公/出差时,照常使用代码库

  • 你只需要在能够接入Git服务器所在网络时,PULL和PUSH即可完成和服务器同步以及提交

  • Git提供 rebase 命令,可以让你的改动看起来是基于最新的代码实现的改动

  • Git 有更多的工作模式可以选择,远非 Subversion可比

什么是“版本控制”?

       版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况以及回溯的系统。 任何类型的文件都可以进行版本控制。

      如果你是位图形或网页设计师,可能会需要保存某一幅图片或页面布局文件的所有修订版本(这或许是你非常渴望拥有的功能),采用版本控制系统(VCS)是个明智的选择。

      有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。

     使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先的样子。 但额外增加的工作量却微乎其微。

本地版本控制系统

     许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。 这么做唯一的好处就是简单,但是特别容易犯错。 有时候会混淆所在的工作目录,一不小心会写错文件或者覆盖意想外的文件。

     为了解决这个问题,人们很久以前就开发了许多种本地版本控制系统,大多都是采用某种简单的数据库来记录文件的历次更新差异。

24.png

Figure 1. 本地版本控制.

      其中最流行的一种叫做 RCS,现今许多计算机系统上都还看得到它的踪影。 甚至在流行的 Mac OS X 系统上安装了开发者工具包之后,也可以使用 rcs 命令。 它的工作原理是在硬盘上保存补丁集(补丁是指文件修订前后的变化);通过应用所有的补丁,可以重新计算出各个版本的文件内容。

集中化的版本控制系统

接下来人们又遇到一个问题,如何让在不同系统上的开发者协同工作?

      于是,集中化的版本控制系统(Centralized Version Control Systems,简称 CVCS)应运而生。 这类系统,诸如 CVS、Subversion 以及 Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。 多年以来,这已成为版本控制系统的标准做法。

25.png

Figure 2. 集中化的版本控制.

       这种做法带来了许多好处,特别是相较于老式的本地 VCS 来说。 现在,每个人都可以在一定程度上看到项目中的其他人正在做些什么。 而管理员也可以轻松掌控每个开发者的权限,并且管理一个 CVCS 要远比在各个客户端上维护本地数据库来得轻松容易。

       事分两面,有好有坏。 这么做最显而易见的缺点是中央服务器的单点故障。 如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。 如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问你将丢失所有数据——包括项目的整个变更历史,只剩下人们在各自机器上保留的单独快照。 本地版本控制系统也存在类似问题,只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。

分布式版本控制系统

      于是分布式版本控制系统(Distributed Version Control System,简称 DVCS)面世了。 在这类系统中,像 Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。

26.png

Figure 3. 分布式版本控制.

      更进一步,许多这类系统都可以指定和若干不同的远端代码仓库进行交互。籍此,你就可以在同一个项目中,分别和不同工作小组的人相互协作。 你可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。

推荐学习:《Git教程

以上是git属于什么版本的控制系统的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn