Git浅谈随笔之---如何工作
其他的版本控制工具我们常见的还有SVN,关于这两者的区别,我们不多谈,详见 Git 与 SVN 的区别 ;
Git是一种版本控制工具。用来记录文件内容的变化,备以后查阅某个版本的情况的系统;我们在Git中存放的一般是文本代码、少量的图片或者多媒体资源,但是事实上Git可以用来存放任何类型的文件。 Git官网对版本控制的说明有一段话,我直接粘贴过来:
如果你是位图形或网页设计师,可能会需要保存某一幅图片或页面布局文件的所有修订版本(这或许是你非常渴望拥有的功能),采用版本控制系统(VCS)是个明智的选择。 有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。 使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先的样子。 但额外增加的工作量却微乎其微。
阅读以上文字可见,版本控制的好处,不仅可以对比,还可以记录你每个版本的状态。可以备份资源,多人协作的时候还可以对每个人的修改内容进行查看,甚至你删除文件之后,只要纳入Git的跟踪范围,后续还可以恢复那些文件。还有需要巧妙的用法,这个看个人习惯。由此可见,对Git有一个比较全面的了解和熟练的使用,将会极令工作或者生活变得有序。(有点跑偏了,回到正题)
对待数据:Git在对待我们跟踪的数据的时候,是通过保存数据快照的方式来完成的,每次我们提交的时候,Git都会对所有跟踪(track)的文件制作一个快照并为这些文件指定一个索引(也就是SHA-1值),之后保存这个索引。如果在此次提交中,有些文件没有改变,那么这些不变的文件就不会生成新的快照,自然也就不会有新的索引,而是依然保存文件上次变动的SHA-1值
网络依赖性: Git允许我们离线进行操作,跟踪(track)我们需要的文件、提交更新、新建或者切换分支,每一个克隆项目的人的机子里都有这个项目所有协同工作者的所有提交记录,所以可以在本地进行几乎所有的操作,虽然这个时候可能会有些滞后。
保证完整性:由于我们通过Git保存数据,所以在提交的时候,Git都会发现我们的信息是否完整,通过SHA-1值来计算校验。Git里的SHA-1值是长度为40位的十六进制(0-9, a-f)符号组成的字符串,例如: 23fd98ca1a23fd98ca1a23fd98ca1a23fd98ca1a,这种SHA-1值非常多,包括保存文件(blob)快照、保存commit数据、保存tree数据和保存tag数据。Git从不是通过文件名称来保存的,都是通过这种SHA-1值来完成的。
三个状态:在Git中,我们的文件有三种状态: 已修改(modified)、已暂存(staged)、已提交(commited)。已修改表示这个文件被修改,但是没有暂存,如果这个文件是新增的,那么文件是一个未跟踪(untracked)的状态。已暂存,表示这个文件已经生成快照并且记录起来,在下一次提交的时候会提交。已提交表示数据已经到达Git的数据库中。如果一个项目是Git项目,那么会有三种区域:
这个图我直接贴上来了,工作区、暂存区、历史区(也叫本地仓库),如果我们有远程仓库,通过git push命令后,会推送到远程仓库。
三个区域的功能:
工作区:通过Git提取某个版本的内容后,会看到这个版本的所有内容,我们工作的时候就是在这个区域修改的
暂存区:当我们把新增的或者修改的文件添加之后,首先会放到暂存区。刚刚说过,Git是通过保存文件快照并为文件指定一个索引来工作的,所以暂存区存放的都是索引的信息
历史区:存放Git所有的元数据和对象数据
工作区(修改文件) ---- add ----> 暂存区 ---- commit ----> 历史区;
Cyan_Con 初写blog,请多多指教!
2020-02-23 22:19:57
Git浅谈随笔之---如何工作的更多相关文章
- 浅谈dedecms模板引擎工作原理及其自定义标签
浅谈dedecms模板引擎工作原理: 理解织梦模板引擎有什么意思? 可以更好地自定义标签.更多在于了解织梦系统,理解模板引擎是理解织梦工作原理的第一步. 理解织梦会使我们写PHP代码是更顺手,同时能学 ...
- git浅谈
我们为什么要使用git 应用场景分析 1.使用svn,已经开发完一个需求,正在开发第二个需求,但是测试需要你立刻将你完成的第一个需求提交,请问现在你该怎么做: svn的解决方法大概是这样的:打开提交视 ...
- 浅谈 linux 例行性工作 crontab (linux定时任务)
定时任务大家都挺说过,就好比你手机上的闹钟,到了指定的时候就会响起. 今天在对redis缓存进行定时储存时又操作了一把,发现一些细节,写的不好.大家就将就看吧, 首先 简单介绍一下linux 例行性工 ...
- (转)浅谈dedecms模板引擎工作原理及自定义标签
理解织梦模板引擎有什么意义?一方面可以更好地自定义标签.更多在于了解织梦系统,理解模板引擎是理解织梦工作原理的第一步.理解织梦会使我们写php代码时更顺手,同时能学习一些php代码的组织方式. 这似乎 ...
- 浅谈malloc()和free()工作原理
编程之路刚刚开始,错误难免,希望大家能够指出. malloc()和free()是我经常需要用到的函数,一般情况下,C程序使用malloc()在堆上分配内存,free()释放内存,两者的参数和返回值就 ...
- 浅谈JSONP 的本质工作原理
json 是一种数据格式jsonp 是一种数据调用的方式. 你可以简单的理解为 带callback的json就是jsonp 话说我们访问一个页面的时候 需要像另一个网站获取部分信息, 这就是所谓的跨域 ...
- 浅谈GIT
浅谈GIT: 牛老师提出的git,于我而言,是一个陌生和新鲜的词汇,在此之前我从未听过git,按照老师的要求,我去搜索了关于git的介绍,有些看懂了,但大部分还是不懂得,在介绍中我了解git其实之前使 ...
- 开发工具--浅谈Git
工具|浅谈Git Git这个工具,是我一直想写文章,终于我实现了我的想法.在我开始写之前,发表一下自己的看法,git只是一个工具,既然已经认定是一个工具,那么一定具备工具这类的共同特征,请用面向对象的 ...
- TODO:浅谈pm2基本工作原理
TODO:浅谈pm2基本工作原理 要谈Node.js pm2的工作原理,需要先来了解撒旦(Satan)和上帝(God)的关系. 撒旦(Satan),主要指<圣经>中的堕天使(也称堕天使撒旦 ...
随机推荐
- html5中的Web Storage
html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage.sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有 ...
- MySQL查询基础
MySQL查询 DQL(Data Query Language ) 1.排序查询 # 语法: select 字段 from 表名 order by 字段1 [降序/升序],字段2 [降序/升序],.. ...
- Gitlab的介绍
什么是GitLab ?◆GitLab是一个开源分布式版本控制系统◆开发语言: Ruby◆功能:管理项目源代码.版本控制.代码复用与查找GitLab与GitHub的不同 ◆ Github分布式在线代码托 ...
- 国产CPU 申威1621 异数OS基础组件理论性能测试报告
国产CPU 申威1621 异数OS基础组件理论性能测试报告 文章目录 国产CPU 申威1621 异数OS基础组件理论性能测试报告 前言 测试平台 测试项目 SW1621 异数OS 容器虚拟交换机模拟性 ...
- 团队第一次作业(软工C#造梦厂)
一.团队简介 a.团队名称:软工C#造梦厂 b.队员列表 姓名 学号 张旭(组长) 201731024123 周成杰 201731024136 邹扬锋 201731024134 赵俊安 2017310 ...
- 团队项目—Beta版本冲刺3
博客介绍 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScience 这个作业要求在哪里 https://w ...
- HTTP负责均衡模块(HTTP Upstream)
这个模块为后端的服务器提供简单的负载均衡(轮询(round-robin)和连接IP(client IP))如下例: upstream backend { server backend1.examp ...
- JSTL (标准标签库)
JSTL(标准标签库) 作用: Web程序员能够利用JSTL和EL来开发Web程序,取代传统直接在页面上嵌入Java程序(Scripting)的做法,以提高程序的阅读性.维护性和方便性. 使用方法:J ...
- 10个很多人不知道的Redis使用技巧
前言 Redis 在当前的技术社区里是非常热门的.从来自 Antirez 一个小小的个人项目到成为内存数据存储行业的标准,Redis已经走过了很长的一段路.随之而来的一系列最佳实践,使得大多数人可以正 ...
- 看完这篇文章,再次遇到Jedis「Redis客户端」异常相信你不再怕了!
本文导读: [1] 疫情当前 [2] 应用异常监控 [3] Redis客户端异常分析 [4] Redis客户端问题引导分析 [5] 站在Redis客户端视角分析 [6] 站在Redis服务端视角分析 ...