标签:功能 增量 检验 独立 不同的 git仓库 本地仓库 是什么 bsp
最近公司项目使用的Git作为版本控制工具,在此将学习心得总结如下。文章的本意是尝试用最简单最通俗的方法来描述我眼中的Git,不涉及繁杂的git指令,不具有科学的指导意义,仅供娱乐,欢迎拍砖。
1、Git有什么用?
项目管理中有很多困难是难以避免的,比如说如何保证文件操作的可溯源性?不断迭代升级的产品该如何管理?团队合作应当如何高效协调的运作?...特别是随着项目规模和体系的不断扩大,这些困难将会变成雪球,让管理者苦不堪言。而Git作为一款非常优秀的版本控制工具,能够优雅的解决上述问题,无论是管理代码,还是管理其他行业的媒体资料,都是非常实用的。
2、不得不说的快照
本来不打算写快照的,但是考虑到谈及Git这是个绕不开的概念,就临时把快照的内容加上吧...
快照(Snapshot)是一种文件的储存形式,它的概念是相对于另一种储存形式--拷贝而存在的。日常生活中我们经常会用到拷贝功能,比如点击右键复制粘贴,就可把一个文件夹里一箩筐的内容复制一份到另一个文件夹里,在磁盘不同的物理地址上,此时存放着两份相同的内容。
而Git中的快照更像是某一时刻文件状态的记录,就像照片一样,快照体现的是一种"查看"的功能。那么问题就来了,既然我要的只是能快速找到某一时刻的状态,那我们完全可以采取一种更轻量级的方式去实现(拷贝也可以实现, 但是毫无疑问占空间和时间),于是大神们想到了采用一种共享的方式来解决问题。(关于Git快照未找到权威解释,完全基于个人理解,为严谨起见,可选择忽略...)
打个比方:你已经有了7、8、9三张牌,又摸到了一张9,这时候如果让你展示之前你手里的牌,你会展示7、8、9;让你展示手里最新的牌,你会展示7、8、9、9;让你展示对子,你只需要展示9、9即可;让你展示倒序,你又把剩下的牌拾起,展示9、9、8、7;让你展示所有的梅花,你可能又会展示出其他的组合。总之,你手里从头到尾只有4张牌,但是你可以通过排列组合展现出好几种不同的状态,如果我们把这些状态对应的逻辑顺序记录下来,就可以在任何时候快速找回这些状态。
3、Git为什么好?
版本控制工具分为集中式和分布式两大类。作为分布式版本控制工具,Git用有很多传统集中式不具有的优点:
直接记录快照而非差异
SVN为代表的的集中式管理工具采用的是增量存储的方式,即相对于上一次修改,我只记录我这次的改动情况;而Git则是不管你以前是什么样的,你改一次,我把结果记录一次。这样的好处是显而易见的,它使得每一次的修改提交都是对整个项目的完整记录,我们可以通过任何一个项目版本找到当时所有的文件都处于什么状态,这种独立性使我们不需要知道上一次或是再上一次我们到底提交了些什么,修改了些什么。
几乎所有的操作都是本地执行
Git中引入了本地仓库的概念,你只需要执行git clone指令,你的电脑上便已经有一份和远程仓库(中央)一模一样的工作文件。所以,只要你不和其他协同者进行交互,完全就不需要联网,也能完成自己的任务。
这就是分布式的魅力之一——实现去中心化。
可以确保数据的完整性
Git引入了校验和的概念,以确保数据的完整性。什么是校验和呢?其实有点像是对一个文件特征的提取,从而产出的映射关系。比如说提取了你的指纹,那么这个指纹就是个校验和,每次上班打卡,检验这个人是不是你的时候,找指纹就行了。是不是非常的保险?
一般只添加数据
第一条已经说明,本地仓库中已经保存了每一个版本的快照,所以我们想查看任何历史版本,都可以轻松的跳转(checkout)过去,而不需要进行删除操作。我拥有时光机可以任意穿梭,昨天也是独一无二的一天,为什么要删除昨天呢?既然我们几乎不会进行删除操作,那么也就可以最大限度的避免各种错误。
结尾:作为一名一个月之前对Git一无所知的菜鸟,难免会漏洞百出,不足之处希望能得到大神指点。。后续一系列的文章将不定期更新,通过介绍Git仓库、Git分区、Git分支、Git原理,来系统的探索Git的神奇。
标签:功能 增量 检验 独立 不同的 git仓库 本地仓库 是什么 bsp
原文地址:https://www.cnblogs.com/mrpour/p/10961562.html