分支简介
git add README test.rb LICENSE
# README test.rb LICENSE三个文件计算哈希值,将这个哈希值作为指针
$ git commit -m 'The initial commit of my project'
# 计算每一个子目录的校验和,保存为树对象。提交的时候包含了用户等信息和指向这棵树对象的指针
现在,Git 仓库中有五个对象:三个 blob 对象(保存着文件快照)、一个树对象(记录着目录结构和 blob 对象索引)以及一个提交对象(包含着指向前述树对象的指针和所有提交信息)。
做些修改后再次提交,那么这次产生的提交对象会包含一个指向上次提交对象(父对象)的指针。
commits-and-parents.png
Git 的分支,其实本质上仅仅是指向提交对象的可变指针。 Git 的默认分支名字是 master。 在多次提交操作之后,你其实已经有一个指向最后那个提交对象的 master 分支。 它会在每次的提交操作中自动向前移动。
Git 的 “master” 分支并不是一个特殊分支。 它就跟其它分支完全没有区别。 之所以几乎每一个仓库都有 master 分支,是因为 git init 命令默认创建它,并且大多数人都懒得去改动它。
branch-and-history.png
分支创建
git branch testing # 创建了一个名字是testing的指针
two-branches.png
HEAD指针指向的分支就是当前所在分支
head-to-master.png
分支切换
git checkout testing
head-to-testing.png
Git 的分支实质上仅是包含所指对象校验和(长度为 40 的 SHA-1 值字符串)的文件??一个分支一个文件还是所有分支一个文件.
文件内容仅仅是一个校验和?
网友评论