其他的版本控制工具我们常见的还有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浅谈随笔之---如何工作的更多相关文章

  1. 浅谈dedecms模板引擎工作原理及其自定义标签

    浅谈dedecms模板引擎工作原理: 理解织梦模板引擎有什么意思? 可以更好地自定义标签.更多在于了解织梦系统,理解模板引擎是理解织梦工作原理的第一步. 理解织梦会使我们写PHP代码是更顺手,同时能学 ...

  2. git浅谈

    我们为什么要使用git 应用场景分析 1.使用svn,已经开发完一个需求,正在开发第二个需求,但是测试需要你立刻将你完成的第一个需求提交,请问现在你该怎么做: svn的解决方法大概是这样的:打开提交视 ...

  3. 浅谈 linux 例行性工作 crontab (linux定时任务)

    定时任务大家都挺说过,就好比你手机上的闹钟,到了指定的时候就会响起. 今天在对redis缓存进行定时储存时又操作了一把,发现一些细节,写的不好.大家就将就看吧, 首先 简单介绍一下linux 例行性工 ...

  4. (转)浅谈dedecms模板引擎工作原理及自定义标签

    理解织梦模板引擎有什么意义?一方面可以更好地自定义标签.更多在于了解织梦系统,理解模板引擎是理解织梦工作原理的第一步.理解织梦会使我们写php代码时更顺手,同时能学习一些php代码的组织方式. 这似乎 ...

  5. 浅谈malloc()和free()工作原理

    编程之路刚刚开始,错误难免,希望大家能够指出.  malloc()和free()是我经常需要用到的函数,一般情况下,C程序使用malloc()在堆上分配内存,free()释放内存,两者的参数和返回值就 ...

  6. 浅谈JSONP 的本质工作原理

    json 是一种数据格式jsonp 是一种数据调用的方式. 你可以简单的理解为 带callback的json就是jsonp 话说我们访问一个页面的时候 需要像另一个网站获取部分信息, 这就是所谓的跨域 ...

  7. 浅谈GIT

    浅谈GIT: 牛老师提出的git,于我而言,是一个陌生和新鲜的词汇,在此之前我从未听过git,按照老师的要求,我去搜索了关于git的介绍,有些看懂了,但大部分还是不懂得,在介绍中我了解git其实之前使 ...

  8. 开发工具--浅谈Git

    工具|浅谈Git Git这个工具,是我一直想写文章,终于我实现了我的想法.在我开始写之前,发表一下自己的看法,git只是一个工具,既然已经认定是一个工具,那么一定具备工具这类的共同特征,请用面向对象的 ...

  9. TODO:浅谈pm2基本工作原理

    TODO:浅谈pm2基本工作原理 要谈Node.js pm2的工作原理,需要先来了解撒旦(Satan)和上帝(God)的关系. 撒旦(Satan),主要指<圣经>中的堕天使(也称堕天使撒旦 ...

随机推荐

  1. 三个css属性 设置文字竖直居中

    display: flex; justify-content:center; align-items:Center;

  2. 各种小的 dp (精)

    Q~ 抛一枚硬币 n 次,每次可能是正面或者反面向上,求没有连续超过 k 次硬币向上的方案数 A : dp[ i ] 表示到 i 位置的方案数, 1 . 当 i < k 时, dp[i] = d ...

  3. 求1-n 中与 m 互质的素因子 (容斥原理)

    ll prime[100]; ll cnt; void getprime(){ cnt = 0; ll num = m; for(ll i = 2; i*i <= m; i++){ // sqr ...

  4. React Context 的用法

    在React的官方文档中,Context被归类为高级部分(Advanced),属于React的高级API,但官方并不建议在稳定版的App中使用Context. The vast majority of ...

  5. 前端笔记6-js2

    1.break 和continue用法 break结束本次循环,如果想结束外层循环,可以通过这个label来指定要结束的循环. continue可以用来跳过当次循环,如果想跳过外次循环,也可以通过这个 ...

  6. Manipulating Data from Oracle Object Storage to ADW with Oracle Data Integrator (ODI)

    0. Introduction and Prerequisites This article presents an overview on how to use Oracle Data Integr ...

  7. shell 条件测试

    1.文件相关 -e 判断文件或者文件夹是否存在 -d 判断目录是否存在 -f 判断文件是否存在 -r 判断是否有读权限 -w 判断是否有写权限 -x 判断是否有执行权限 1.1命令行使用 [root@ ...

  8. node js 爬啊爬 记录 向 Scott 致敬 不要问为什么

    更优雅的异步编程: 定向爬取 :http://www.010xww.com/list/travel.htm 上代码: 打印一下http . 嗯 http 模块加载没问题 获取一个 文章列表: 终于把人 ...

  9. 分布式RPC系统框架Dubbo

    导读 Apache Dubbo是一款高性能.轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现. dubbo官网:点我直达 第一 ...

  10. quick-cocos2d-x项目《狂点小怪兽》总结

    最近找了个公司实习,领导让我把公司的<狂点小怪兽>C++游戏用Lua重写.大概用了一个星期完成. 第一次使用quick-cocos2d-x,磕磕碰碰的也算是走了一遍流程. 1. quick ...