我们可以看到,现在这个项目的提交历史已经产生了分叉 。
在实际工作中 , 是因为你创建了一个新分支,并切换过去进行了一些工作,可能随后又切换回 master 分支进行了另外一些工作,这样针对的是不同分支进行改动,就会在工作目录中产生项目的分叉历史 。此时
你可以在不同分支间不断地来回切换和工作 , 并在时机成熟时将它们合并起来 。而所有这些工作,你需要的命令只有branch
、checkout
和commit
。
HEAD
指针的状态如下图:
文章插图
9、分支的总结由于 Git 的分支实质上仅是包含 , 所指对象校验和(长度为 40 的 SHA-1 值字符串)的文件,所以它的创建和销毁都异常高效 。创建一个新分支就相当于往一个文件中写入 41 个字节(40 个字符和 1 个换行符) , 如此的简单能不快吗 。
这里简单说明一下:
# 1.查看.git/refs/heads目录L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing)$ ll .git/refs/heads/total 2-rw-r--r-- 1 L 197121 414月 16 22:07 master-rw-r--r-- 1 L 197121 414月 17 11:26 testing# 可以看到.git/refs/heads目录存放的是版本库中的分支 。# 2.查看testing文件只呢个中的内容给L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing)$ cat .git/refs/heads/testing7ba443e4f6591631af4276bd3aa7356ff0f61fac# 可以看到是一个提交的索引,对比上图中的`7ba443e`提交 , 你就明白了 。# 3.在往深说一点,查看.git/HEAD文件L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing)$ cat .git/HEADref: refs/heads/testing# .git/HEAD文件就是之前说的HEAD指针,指向了当前正在工作的分支 。# 是不是一切都非常的简单高效 。
这与过去大多数版本控制系统形成了鲜明的对比 , 它们在创建分支时,将所有的项目文件都复制一遍,并保存到一个特定的目录 。完成这样繁琐的过程通常需要好几秒钟,有时甚至需要好几分钟 。所需时间的长短,完全取决于项目的规模 。而在 Git 中,任何规模的项目都能在瞬间创建新分支 。同时,由于每次提交都会记录父对象 , 所以寻找恰当的合并基?。垂餐嫦龋┮彩峭募虻ズ透咝?。这些高效的特性使得 Git 鼓励开发人员频繁地创建和使用分支 。
推荐阅读
- 原神游音旅梦二周年活动内容介绍
- 二进制安装Dokcer
- 一 『现学现忘』Git分支 — 40、分支基本操作
- 支付宝扫码领红包二维码分享
- 穿越火线手游暗影宝藏岛第二关怎么通关
- .net core-利用PdfSharpCore和SkiaSharp.QrCode 添加PDF二维码页眉
- 二 网络工程知识VLAN的基础和配置:802.1q帧;Access、Trunk、Hybrid接口工作模式过程与配置;VLANIF的小实验
- 『现学现忘』Git分支 — 39、Git中分支与对象的关系
- 二 Selenium+Python系列 - 元素定位那些事
- 划拳中的十五、二十怎么玩啊(划拳必赢的十大技巧)