首页 > 其他分享 >Git的历史

Git的历史

时间:2023-08-12 18:02:51浏览次数:30  
标签:历史 版本控制 Git 版本 Linux Linus VCS

1、“Git”是什么?

    浅显的理解,Git是一款代码管理工具(Version Control System),无疑对比现在市面上的VCS,“Git”绝对是最牛逼的。深层次的讲,在公司的时候,某大神曾讲:“Git的出现,使得其他国家和美国的计算机水平差距拉近了30年!!!”,也是从那个时候起,小生励志要好好学习Git,造福网友。

2、“VCS”的历史

   如上,已经了解“Git”是一款VCS,那么究竟什么是VCS?

   "SVN"就是一款常用的VCS,至此就了解了,VCS就是用来管理代码的版本的工具,纵观VCS的历史,如图:   

Git的历史_版本控制

        (一帧一帧转出来的,导图是不是又长进啦?哈哈)

   其实从上世纪90年代初到本世纪2005年,VCS一共经历了三个里程碑式的进步:

2.1本地版本控制 

                           

Git的历史_服务器_02

     其原理也如图所示:通过保存并管理文件补丁的方式,来记录对应文件修订前后的内容变化。目前最为流行的一种本地版本控制系统是rcs,所以,根据每次修订后的补丁,rcs可以通过不断打补丁,计算出各个版本的文件内容。当然这样做之后,对于本机被管理文件可以做到版本回滚或者回退,但是对于处在不同系统上的开发者要进行协同工作,就遇到了问题。于是也就有了下面的“集中式版本控制工具”。            

2.2集中式版本控制

                       

Git的历史_版本控制_03


    如上图所示,是集中式版本控制的原理图。比较流行的工具有CVS,Subversion(SVN)以及Perferce等,他们都有一个单一的几种管理的服务器,保存所有文件的修订版本,协同工作的人(如图中的Computer A、Computer B)通过客户端连接到Central VCS Server这台服务器上,取出或者提交文件,而这也成为了版本控制系统的标准做法。

   相比老式的VCS,每个人能看到项目中其他人在干嘛,管理员也可以控制每个开发者的权限,但是一个致命的缺点就是中央服务器的单点故障。如果发生,谁都无法提交更新,无法协同工作,甚至有丢失数据的风险。至此,后来产生了“分布式版本控制工具”。          

2.3分布式版本控制

                      

Git的历史_服务器_04


     如图,是分布式版本控制的示意图,比较火的有Git,Bazaar等,原理在于:“客户端并不是提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来”,这样一来,任何一处协同工作的服务器发生故障,事后可以使用任何一个镜像出来的本地仓库恢复,因为每一次提取操作,都是对镜像的完整备份。

    由此便对版本控制的历史进行了回顾,对于“分布式版本控制”中的Git,除了有上述的有点之外,还有相对于其他“分布式版本控制”的独特之处,后边给予分析,至此,VCS的宏观概念就建立了。

3、“Git”的历史

    这段历史,我在网上的资料中看的也是如痴如醉,首先Git的创始人是“Linus Torvalds”,如果你不知道他是何许人也,我想也就没有必要再贵圈混下去了,爆照:(帅锅程序猿一枚)       

Git的历史_版本控制系统_05

如图,是Linus年轻时候的照片,没错,这就是Linux的创始人。

    言归正传,起初参与Linux开源项目的代码是由Linus本人通过“diff”和“patch”命令来手动为别人整合代码的,之后正如在《Pro Git》这本书中所讲到的,随着项目越做越大,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。直到2005年,Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图Po 解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!Git也由此诞生了。然而牛逼的人生从来不需要解释这句话被Linus展现的淋漓尽致……

标签:历史,版本控制,Git,版本,Linux,Linus,VCS
From: https://blog.51cto.com/u_15130867/7060435

相关文章

  • git创建远程分支
    gitclonehttps://XXXXXgitbranch//查看当前本地分支(只有master)gitcheckout-bquery_vip//在本地创建query_vip分支gitpushoriginquery_vip//把query_vip分支推送到远程gitbranch--set-upstream-to=origin/query_vip//将本地query_vip分支关联......
  • 码云git clone报错Incorrect username or password ( access token )
    使用码云将仓库clone到本地,报错信息如下:D:\\123\>gitclonehttps://gitee.com/ycyzharry/helloworld.gitCloninginto'helloworld'...remote:Incorrectusernameorpassword(accesstoken)fatal:Authenticationfailedfor'https://gitee.com/ycyzharry/h......
  • Gitc错误Failed to connect to 127.0.0.1 port 1080 Connection refused拒绝连接错误
    一、git拒绝连接原因分析使用git从远程仓库下载代码出现上述的错误是因为使用了proxy代理,所以要解决该问题,核心操作就是要取消代理二、解决方式1、查看Linux当前有没有使用代理通过git的配置文件查看有无使用代理(没有成功)查询是否使用代理:gitconfig--globalhttp.proxyg......
  • git常用的命令
    一.克隆git上的项目1.1克隆git上的主分支项目gitclone项目链接1.1克隆git上的其他分支项目标题:SQLServer导入和导出向导------------------------------操作无法完成。------------------------------其他信息:------------------------------按钮:确定......
  • 问题记录 <git push 到 github 时遇到 ssh 端口问题>
    问题描述gitpush时遇到如下问题:ssh:connecttohostgithub.comport22:Connectiontimedoutfatal:Couldnotreadfromremoterepository.解决方式通过修改端口得以解决,将22端口改为443,添加~/.ssh/config内容如下:Hostgithub.comHostnamessh.github.com......
  • gitee仓库创建和操作系统安装流程
    创建Gitee账号和仓库1、官网:https://gitee.com/创建好账号,然后登录账号2、流程点击创建仓库填写仓库信息创建好仓库后点击仓库主页的管理在管理中自行选择是否开源创建好仓库后:点击自己主页设置,配置SSH秘钥点击设置按钮跳转到主页,然后点击红色箭头的SSH秘钥配......
  • Git Cherry-pick使用
    概述无论项目大小,当你和一群程序员一起工作时,处理多个Git分支之间的变更都会变得很困难。有时,与其把整个Git分支合并到另一个分支,不如选择并移动几个特定的提交。这个过程被称为"挑拣",即Cherry-pick。本文将介绍"Cherry-pick"的内容、原因和方法。让我们开始吧~什么......
  • Git Cherry-pick使用
    概述无论项目大小,当你和一群程序员一起工作时,处理多个Git分支之间的变更都会变得很困难。有时,与其把整个Git分支合并到另一个分支,不如选择并移动几个特定的提交。这个过程被称为"挑拣",即Cherry-pick。本文将介绍"Cherry-pick"的内容、原因和方法。让我们开始吧~什么......
  • github 无语的问题,Host does not existfatal: Could not read from remote repository
    Unabletoopenconnection:Hostdoesnotexistfatal:Couldnotreadfromremoterepository.image.pngimage.pngimage.pngPleasemakesureyouhavethecorrectaccessrightsandtherepositoryexists.如果githubdesktop和gitpu......
  • 搭建Git服务器
    搭建Git服务器参考教程:从远程库克隆-廖雪峰的官方网站(liaoxuefeng.com)Git服务器搭建|菜鸟教程(runoob.com)【git】新电脑(Windows)中Git配置SSH公钥远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改。GitHub就是一个免费托管开源代码的远程......