📢📢📢📣📣📣
哈喽!大家好,我是【一心同学】,一位上进心十足的【Java领域博主】!😜😜😜
✨【一心同学】的写作风格:喜欢用【通俗易懂】的文笔去讲解每一个知识点,而不喜欢用【高大上】的官方陈述。
✨【一心同学】博客的领域是【面向后端技术】的学习,未来会持续更新更多的【后端技术】以及【学习心得】。
✨如果有对【后端技术】感兴趣的【小可爱】,欢迎关注【一心同学】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️
一、什么是Git?
【一心同学】用一句话概括:
Git是目前世界上最先进的分布式版本控制系统,没有之一!
二、什么是版本控制系统?
🌴问题引入
我们来讲一个例子,在公司里,上司要让小明去写一份报告,小明是一个非常认真工作的员工,于是小明回到家后就开始写报告,写好了一份报告,却发现好像有些地方不太好,但对于原报告又不想删掉,说不定哪一天可以用得着呢,于是,小明就在第一份报告的基础上继续更改,第二个版本的报告完成了,但细心的小明发现不行,还得改,于是,就又写了版本3,版本4.....
于是就造成了以下这个局面:
🚀【痛苦面具1】:当小明想要找回之前修改的某个报告时,却【找不到了】,是不是极其【痛苦】。
🚀【痛苦面具2】:有些部分需要小明的同事帮助填写,于是小明把文件通过【微信】发送给他,然后,小明继续修改Word文件。一天后,同事再把Word文件传给小明,此时,小明需再想想,发给同事之后到收到他的文件期间,小明作了【哪些改动】,得把小明的改动和同事的部分【合并】,真【困难】。
🌴救星登场
如果有一个软件,不但能自动帮我记录每次文件的改动,还可以让同事协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,岂不是很方便?
这个软件用起来就应该像这个样子,能记录每次文件的改动:
而这个就是我们的版本控制系统!
二、集中式与分布式版本控制区别
🌵集中式版本控制(CVCS)
🚀特点:
版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
🚀优点:
1、每个人都可以在一定程度上看到项目中的其他人正在做些什么。
2、管理员可以轻松掌控每个开发者的权限,并且管理一个 CVCS 要远比在各个客户端上维护本地数据库来得轻松容易。
🚀缺点:
1、必须联网才能工作,这也是其最大的毛病。
2、中央服务器的单点故障,如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。
3、安全问题欠佳,如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,那么我们将丢失所有数据。
🌵分布式版本控制系统(DVCS)
🚀特点:
与集中式版本控制系统相比,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,在工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。
🚀那么我们如何多人协作呢?
当你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
🚀实际开发中的使用
在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。
因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
🔥集中式与分布式对比
1、集中式版本管理系统需要中央服务器,分布式管理系统不需要中央服务器。
2、集中式版本管理需要联网,分布式管理不需要联网。
3、分布式版本控制系统的安全性要比集中式版本管理高很多。
因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
三、Git工作流程
🌵工作流程
Workspace:工作区,平时存放项目代码的地方。
Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息。
Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本。
Remote:远程仓库 ,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换。
🚀Git的工作流程:
1、在工作目录(Workspace)中添加、修改文件;
2、将需要进行版本管理的文件放入暂存区域(Index / Stage);
3、将暂存区域的文件提交到Git仓库。
🌵目录结构
Directory:使用Git管理的一个目录,也就是一个仓库,包含我们的工作空间和Git的管理空间。
WorkSpace:需要通过Git进行版本控制的目录和文件,这些目录和文件组成了工作空间。
.git:存放Git管理信息的目录,初始化仓库的时候自动创建。
Index/Stage:暂存区,或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在暂存区。
Local Repo:本地仓库,一个存放在本地的版本库;HEAD会只是当前的开发分支(branch)。
Stash:隐藏,是一个工作状态保存栈,用于保存/恢复WorkSpace中的临时状态。
小结
以上就是【一心同学】对【Git的介绍】,现在对Git的理解是不是就突然【熟悉】起来了,而【Git】的强大之处还不仅仅文章指出来的这些,在接下来的博客里,请跟着【一心同学】的步伐去领略【Git】的强大之处!
如果这篇【文章】有帮助到你,希望可以给【一心同学】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点,如果有对【后端技术】感兴趣的小可爱,也欢迎关注❤️❤️❤️ 【一心同学】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!
版权归原作者 一心同学 所有, 如有侵权,请联系我们删除。