git简介_动力节点Java学院整理
发布时间 - 2026-01-11 02:46:43 点击率:次Git是什么?

Git是目前世界上最先进的分布式版本控制系统(没有之一)。
Git有什么特点?简单来说就是:高端大气上档次!
那什么是版本控制系统?
如果你用Microsoft Word写过长篇大论,那你一定有这样的经历:
想删除一个段落,又怕将来想恢复找不回来怎么办?有办法,先把当前文件“另存为……”一个新的Word文件,再接着改,改到一定程度,再“另存为……”一个新文件,这样一直改下去,最后你的Word文档变成了这样:
过了一周,你想找回被删除的文字,但是已经记不清删除前保存在哪个文件里了,只好一个一个文件去找,真麻烦。
看着一堆乱七八糟的文件,想保留最新的一个,然后把其他的删掉,又怕哪天会用上,还不敢删,真郁闷。
更要命的是,有些部分需要你的财务同事帮助填写,于是你把文件Copy到U盘里给她(也可能通过Email发送一份给她),然后,你继续修改Word文件。一天后,同事再把Word文件传给你,此时,你必须想想,发给她之后到你收到她的文件期间,你作了哪些改动,得把你的改动和她的部分合并,真困难。
于是你想,如果有一个软件,不但能自动帮我记录每次文件的改动,还可以让同事协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,岂不是很方便?
这个软件用起来就应该像这个样子,能记录每次文件的改动:
| 版本 | 用户 | 说明 | 日期 |
| 1 | 张三 | 删除了软件服务条款5 | 7/12 10:38 |
| 2 | 张三 | 增加了License人数限制 | 7/12 18:09 |
| 3 | 李四 | 财务部门调整了合同金额 | 7/13 9:51 |
| 4 | 张三 | 延长了免费升级周期 | 7/14 15:17 |
这样,你就结束了手动管理多个“版本”的史前时代,进入到版本控制的20世纪。
很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。
Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?
事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!
你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。
不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。
安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。
Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:
Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。
Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。
历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。
Linus一直痛恨的CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢?
先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟,这还不得把人给憋死啊。
那分布式版本控制系统与集中式版本控制系统有何不同呢?首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
当然,Git的优势不单是不必联网这么简单,后面我们还会看到Git极其强大的分支管理,把SVN等远远抛在了后面。
CVS作为最早的开源而且免费的集中式版本控制系统,直到现在还有不少人在用。由于CVS自身设计的问题,会造成提交文件不完整,版本库莫名其妙损坏的情况。同样是开源而且免费的SVN修正了CVS的一些稳定性问题,是目前用得最多的集中式版本库控制系统。
除了免费的外,还有收费的集中式版本控制系统,比如IBM的ClearCase(以前是Rational公司的,被IBM收购了),特点是安装比Windows还大,运行比蜗牛还慢,能用ClearCase的一般是世界500强,他们有个共同的特点是财大气粗,或者人傻钱多。
微软自己也有一个集中式版本控制系统叫VSS,集成在Visual Studio中。由于其反人类的设计,连微软自己都不好意思用了。
分布式版本控制系统除了Git以及促使Git诞生的BitKeeper外,还有类似Git的Mercurial和Bazaar等。这些分布式版本控制系统各有特点,但最快、最简单也最流行的依然是Git!
# git简介
# git
# git忽略特殊文件_动力节点Java学院整理
# git远程仓库_动力节点Java学院整理
# git修改和删除功能_动力节点Java学院整理
# git分支管理_动力节点Java学院整理
# git多人协作_动力节点Java学院整理
# git冲突解决_动力节点Java学院整理
# github的使用_动力节点Java学院整理
# git标签管理_动力节点Java学院整理
# git工作区和暂存区_动力节点Java学院整理
# git自定义_动力节点Java学院整理
# 控制系统
# 集中式
# 开源
# 自己的
# 每个人
# 给她
# 都是
# 是一个
# 也有
# 就可以
# 世界各地
# 只需
# 你想
# 微软
# 上都
# 好用
# 另存为
# 活了
# 改了
# 再把
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Python数据仓库与ETL构建实战_Airflow调度流程详解
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
JavaScript如何实现音频处理_Web Audio API如何工作?
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
如何在阿里云完成域名注册与建站?
如何在阿里云虚拟服务器快速搭建网站?
Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明
Linux系统命令中tree命令详解
原生JS实现图片轮播切换效果
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
canvas 画布在主流浏览器中的尺寸限制详细介绍
Laravel集合Collection怎么用_Laravel集合常用函数详解
Laravel怎么使用Intervention Image库处理图片上传和缩放
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
怎么用AI帮你为初创公司进行市场定位分析?
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
Laravel如何实现本地化和多语言支持?(i18n教程)
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
b2c电商网站制作流程,b2c水平综合的电商平台?
如何快速搭建二级域名独立网站?
php打包exe后无法访问网络共享_共享权限设置方法【教程】
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
如何在IIS服务器上快速部署高效网站?
PHP 500报错的快速解决方法
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
如何在IIS中配置站点IP、端口及主机头?
如何在宝塔面板中修改默认建站目录?
详解CentOS6.5 安装 MySQL5.1.71的方法
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
如何在新浪SAE免费搭建个人博客?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
Laravel怎么为数据库表字段添加索引以优化查询
如何在万网利用已有域名快速建站?
Laravel如何与Pusher实现实时通信?(WebSocket示例)
微信小程序 闭包写法详细介绍
如何用AWS免费套餐快速搭建高效网站?
,交易猫的商品怎么发布到网站上去?
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
如何快速查询域名建站关键信息?
Laravel怎么在Controller之外的地方验证数据
如何续费美橙建站之星域名及服务?
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
浅谈redis在项目中的应用
如何在 Pandas 中基于一列条件计算另一列的分组均值
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
MySQL查询结果复制到新表的方法(更新、插入)
如何在阿里云域名上完成建站全流程?

