分支就是保存一个commit 对象的sha-1 值的东西(引用类型的数据结构)

创建分支(指向最新的commit 对象)

# git branch <name>
$ git branch testing

查看分支指向的对象

$ git log --oneline --decorate
	# decorate [ˈdekəˌreɪt] 装饰;装点;装潢;点缀
	# 历史记录信息会多出引用数据类型, 每个commit 如果有引用类型指向, 就会显示出来

λ git log --oneline --decorate
d0d654f (HEAD -> master) test
ca82a6d (origin/master, origin/HEAD, testing) changed the verison number
085bb3b removed unnecessary test code
a11bef0 first commit

切换当前分支(即改变HEAD 指向的分支)

HEAD 指向的分支, 会在提交后自动指向最新的commit

#git checkout <branch name>
$ git checkout testing

切换分支后, 工作目录的文件会根据当前分支的快照重新生成

分叉, 在另一个分支提交后就会产生分叉(两个commit 指向同一个父commit )

# 在历史日志中显示分叉的信息
$ git log --oneline -decorate --graph --all

分支的本质

分支本质上只是一个大小41字节的文件, 所以可以高效的增删

40字节的hash 值, 即指向commit 对象的sha-1 值(Checksum 校验和, 就是hash 值)

1字节的换行符

而其它版本控制系统的分支就是一次仓库的copy, 效率低下