Pro Git 学习笔记 (六, 分支基础)

分支简介

git add README test.rb LICENSE
# README test.rb LICENSE三个文件计算哈希值,将这个哈希值作为指针
$ git commit -m 'The initial commit of my project'
# 计算每一个子目录的校验和,保存为树对象。提交的时候包含了用户等信息和指向这棵树对象的指针

现在,Git 仓库中有五个对象:三个 blob 对象(保存着文件快照)、一个树对象(记录着目录结构和 blob 对象索引)以及一个提交对象(包含着指向前述树对象的指针和所有提交信息)。

Pro Git 学习笔记 (六, 分支基础)_第1张图片
commit-and-tree.png

做些修改后再次提交,那么这次产生的提交对象会包含一个指向上次提交对象(父对象)的指针。
Pro Git 学习笔记 (六, 分支基础)_第2张图片
commits-and-parents.png

Git 的分支,其实本质上仅仅是指向提交对象的可变指针。 Git 的默认分支名字是 master。 在多次提交操作之后,你其实已经有一个指向最后那个提交对象的 master 分支。 它会在每次的提交操作中自动向前移动。
Git 的 “master” 分支并不是一个特殊分支。 它就跟其它分支完全没有区别。 之所以几乎每一个仓库都有 master 分支,是因为 git init 命令默认创建它,并且大多数人都懒得去改动它。
Pro Git 学习笔记 (六, 分支基础)_第3张图片
branch-and-history.png

分支创建

git branch testing # 创建了一个名字是testing的指针
Pro Git 学习笔记 (六, 分支基础)_第4张图片
two-branches.png

HEAD指针指向的分支就是当前所在分支


Pro Git 学习笔记 (六, 分支基础)_第5张图片
head-to-master.png

分支切换

git checkout testing
Pro Git 学习笔记 (六, 分支基础)_第6张图片
head-to-testing.png

Git 的分支实质上仅是包含所指对象校验和(长度为 40 的 SHA-1 值字符串)的文件??一个分支一个文件还是所有分支一个文件.
文件内容仅仅是一个校验和?

你可能感兴趣的:(Pro Git 学习笔记 (六, 分支基础))