目录
1 分支原理
1.1 Git保存原理
Git 仓库中有三种对象:
- blob 对象:保存文件快照
- 树对象:记录目录结构和 blob 对象索引
- 提交对象:包含指向树对象的指针、指向其父对象的指针和所有提交信息
每次进行提交操作时,Git 会保存一个提交对象。
首次提交时,没有父对象;普通提交操作,提交对象有一个父对象;由多个分支合并产生的提交对象有多个父对象。
1.2 Git分支原理
Git 的分支,本质上是指向提交对象的可变指针。
Git 仓库初始化时自动创建一个默认分支。Git 的默认分支名字是 master
。每次提交时,其自动向前移动,故始终指向最后一次提交对象。
2 分支操作
2.1 创建分支
创建分支,实际上只是创建一个新的可变指针。命令为:
$ git branch <BranchName>
新创建的分支默认指向当前提交对象。
2.2 切换分支
Git 使用特殊指针 HEAD
指向当前分支。由于git branch
分支仅创建分支,但不会自动切换到新分支。切换分支,使用命令:
$ git checkout <AnotherBranch>
实际上是将 HEAD
指针指向新分支。
切换分支前会检测分支冲突,故最好应提交工作目录和暂存区的修改。
可以使用带 -b
参数的 git checkout
命令,实现新建分支并切换到该分支上:
$ git checkout -b <BranchName>