博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
git笔记
阅读量:6420 次
发布时间:2019-06-23

本文共 623 字,大约阅读时间需要 2 分钟。

hot3.png

commit对象记住的是当时完整的文件快照(全量的文件快照)。

也就是说,只要拥有一个commit对象,就可以完整地还原当时的版本,不需要额外的东西了。这一个事实也是理解后面很多东西的基础。

commit对象是不可变对象。

这个概念类似于fp里的不可变数据,就是说,commit对象的属性,譬如说它的父commit是谁,它指向哪个tree对象,它的提交时间,等等,这些信息,在初始化以后,都是不可变的。 当使用reset, rebase, cherry-pick这些命令来“改变历史”的时候,并没有修改已有的commit对象,而是创建了一些新的commit,并且把分支游标指向了它们。

####一个commit对象可以拥有零个或多个父commit。

在Revision Graph里面,通过一条有向边“ 父commit <= 子commit"来建立这种关系。常见的,进行3方merge的时候,一个commit对象就会有2个父commit对象。

其实你可以随意创建commit对象。

你可以随意新建commit对象,并且在初始化的时候,随意给它指定一些现成的commit对象作为父commit对象。也就是说,两个commit对象即使是父子关系,它们对应的文件快照之间也是没有约束! 造成这个的原因就是前面提到的:commit对象记住的是当时完整的文件快照

转载于:https://my.oschina.net/mustang/blog/363618

你可能感兴趣的文章
InnoDB与MyISAM的区别
查看>>
MongoDB【最新版V2.6】- 系列 3: 架构的设计-Replica Sets
查看>>
Thinking in Java之hashCode()方法
查看>>
Unity定时器堆栈显示
查看>>
在spring security手动 自定义 用户认证 SecurityContextHolder
查看>>
AF3.1.0简单二次封装
查看>>
HTTP 缓存(上)
查看>>
Maclean答网友问:深入进阶学习Oracle数据库的规划
查看>>
Eclipse常用(默认)快捷键
查看>>
C#线程同步
查看>>
六大设计原则快速记忆SOLID
查看>>
解决windows10 9926版本中无法访问samba的方法
查看>>
【VMCloud云平台】拥抱Docker(二)配置第一个容器
查看>>
java中重写方法必须抛出和原方法一样的异常或者不抛异常
查看>>
java中采用Pull解析器对XML文件进行解析
查看>>
MySQL带参数的存储过程小例子
查看>>
我的友情链接
查看>>
linux修改ftp、telnet、ssh的默认端口
查看>>
node.js学习笔记之generator
查看>>
android安全问题(五) 抢先拦截短信 - 结果篇
查看>>