分支就是保存一个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, 效率低下