首页 > 代码库 > git笔记
git笔记
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对象记住的是当时完整的文件快照
git笔记
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。