设为首页 收藏本站
查看: 936|回复: 0

[经验分享] Git 概述

[复制链接]

尚未签到

发表于 2018-9-18 08:16:15 | 显示全部楼层 |阅读模式
  大纲:
  一、前言
  二、Git 简介
  三、Git 的诞生
  四、集中管理 vs 分布式管理
  五、Git 特点
  六、Git 原理
  七、总结
  注,测试机 CentOS 5.5 x86_64,Git 服务器版本:git version 1.8.2.1,客户端版本:git version 1.9.2.msysgit.0。所有软件请到这里下载:http://msysgit.github.io/。
  一、前言
  本来作为一个专职运维,嘿嘿!会搭建Git服务器就OK了,当时真这么想,嘿嘿!本来公司的版本控制器一直在用SVN,我们版本发布用SVN+shell脚本进行发布,但是最近开发部的老大换了,嘿嘿。你懂的。强烈要求我们换版本控制器,虽然很多人不满意,最后还是换成了Git,但是发现很多同事不怎么会使用Git,于是我就写了这个教程到内部tower中,大家看了不错,于是我发出来与大家分享一下!网上很多教程都是从开发的角度来讲Git的,今天我从运维的角度来说Git,大家有什么问题随时与我交流,先在这里谢谢大家了^_^!
  二、Git 简介
  Git 是什么?大家肯定会说不就是版本控制器嘛,是的Git是目前世界上最先进的分布式版本控制系统(没有之一)。
  1.那什么是版本控制器呢?
  举个简单的例子,比如我们用Word写文章,那你一定有这样的经历:比如增加一个段落你得复制一份,你删除一个段落你又得复制一份,防止下次又要修改保留上次你要删除的段落。最后一个接一个的版本,你复制了很多版本,最后可能你自己都不知道修改了哪些?嘿嘿,然后你只能一个一个的找,太麻烦了,若是有东西帮你管理那应该多好。
  2.分布式管理
  你写的文章或书,你肯定会给你朋友或者其他人看,让他们给你建议并做相应的修改,然后他们用邮件或U盘再发给你,你再合并修改一下,真是麻烦,于是你想,如果有一个软件,不但能自动帮我记录每次文件的改动,还可以让朋友之间协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件看一眼就可以,岂不是很方便?这个软件用起来就应该像这个样子,能记录每次文件的改动:
版本用户说明 修改日期1user1增加一行内容2014/4/10 10:222user2修改一行内容2014/4/10 13:123user3删除几个字2014/4/15 20:424user2增加某个内容2014/4/20 16:32  哈哈,这样你就从手工控制“版本”时代到软件自动管理的时代,而且还是分布式管理,至于什么是分布式管理我们下面将详细说明。
  三、Git 的诞生(很传奇)
  先简看一下,下面的图片,是不是很熟悉,嘿嘿!
   DSC0000.png
  简单说:Linus开发Linux内核,需要版本控制器,于是开发了Git。下面是开发周期:

  •   2005/4/3 开发;
  •   2005/4/6 发布;
  •   2005/4/7 管理自身;
  •   2005/6/16 管理Kernel2.6.12。
  大牛是怎么定义的呢?大家可以体会一下。哈哈^_^…… Git 迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。至于Git与GitHub的关系,会再下面的文章里说明。
  四、集中管理 vs 分布式管理
  Linus一直痛恨的CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢? 下面我们来看看两张图:
  1.集中管理
   DSC0001.png
  集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
  缺点:
  集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M~20M的文件就需要10分钟甚至更多时间,这还不得把人给急死啊。
  2.分布式管理
   DSC0002.png
  那分布式版本控制系统与集中式版本控制系统有何不同呢?首先,分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件fiel,你的同事也在他的电脑上改了文件file,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
  和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
  在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。如上图!
  五、Git 特点
  1.Git 总结

  •   分布式
  •   存储快照而非差异
  •   本地有完全的版本库,几乎所有操作都在本地
  •   有内在的一致性,SHA1
  •   优秀的分支管理
  •   支持各种协同模式
  •   开源,有一些第三方软件可整合使用,几乎所有操作都是
  2.与CVS/SVN,Git 的优势

  •   支持离线开发,离线Repository(仓库)
  •   强大的分支功能,适合多个独立开发者协作
  •   速度块
  六、Git 原理
  1.四种基本类型

  •   BLOB:每个blob代表一个(版本的)文件,blob只包含文件的数据,而忽略文件的其他元数据,如名字、路径、格式等。
  •   TREE:每个tree代表了一个目录的信息,包含了此目录下的blobs,子目录(对应于子trees),文件名、路径等元数据。因此,对于有子目录的目录,git相当于存储了嵌套的trees。
  •   COMMIT:每个commit记录了提交一个更新的所有元数据,如指向的tree,父commit,作者、提交者、提交日期、提交日志等。每次提交都指向一个tree对象,记录了当次提交时的目录信息。一个commit可以有多个(至少一个)父commits。
  •   TAG:tag用于给某个上述类型的对象指配一个便于开发者记忆的名字, 通常用于某次commit。
DSC0003.png

  2.工作区(Working Dir),提交区/暂存区(stage/index),版本库
DSC0004.png

  注,大家对上面的原理不了解没关系,大家只要简单的看一下这几张图,在下面的文章中我们会深入了解。
  七、总结
  Q & A:欢迎大家提出问题。最后,希望大家有所收获^_^……


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-589335-1-1.html 上篇帖子: Git前世今生-版本控制软件的发展 下篇帖子: git 学习资料
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表