ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 3.1 分支简介 当使用`git commit`进行提交操作时,Git 会先计算每一个子目录的校验和,然后在 Git 仓库中这些校验和保存为树对象。随后,Git 便会创建一个提交对象,该对象包含了此次提交的基本信息外,还包含了指向这个树对象(项目根目录)的指针。 例如:三个 blob 对象(保存着文件快照)、一个树对象(记录着目录结构和 blob 对象索引)以及一个提交对象(包含着指向前述树对象的指针和所有提交信息)。 ![](https://box.kancloud.cn/f1a5dcd2022c283338b4a6a6cc0bd086_800x443.png) 每次的提交操作,产生的提交对象会包含一个指向上次提交对象(父对象)的指针,其中首次提交产生的提交对象没有父对象,而普通提交操作产生的提交对象有一个父对象,由多个分支合并产生的提交对象有多个父对象。 ![](https://box.kancloud.cn/a93852af1809af57921fd829948192f6_800x265.png) Git 的分支,其实本质上仅仅是指向提交对象的可变指针。 Git 的默认分支名字是`master`。Git 的 `master` 分支并不是一个特殊分支。 它就跟其它分支完全没有区别。 之所以几乎每一个仓库都有 master 分支,是因为`git init`命令默认创建它。 ![](https://box.kancloud.cn/e4677e6c70a1c7b2aafb10bf4b7e3d1d_800x430.png) 而 `HEAD` 指针是指向分支的,用来表示当前所处的分支。 ### 3.1.1 分支创建 使用 `branch` 命令可以创建一个新的分支: ``` $ git branch [branch] ``` 该命令会在当前所在的提交对象上创建一个指针。 ![](https://box.kancloud.cn/08d777aeface2958e043e4dc60121687_800x331.png) 如果需要查看每个分支所指向的对象,可以使用 `git log` 附加参数 `--decorate` : ``` $ git log --decorate ``` ### 3.1.2 分支切换 如果要切换到一个已存在的分支,只需要使用`checkout`命令: ``` $ git checkout [branch] ``` 该命令会将 `HEAD` 指向所指定的分支上。