几乎每个VCS都有某种形式的分支支持。分支意味着你偏离了开发的主线,并继续工作而不会弄乱主线。在许多VCS工具中,这是一个有点昂贵的过程,通常需要您创建源代码目录的新副本,这对于大型项目可能需要很长时间。
有些人将 Git 的分支模型称为其“杀手级功能”,这无疑使 Git 在 VCS 社区中脱颖而出。为什么它如此特别?Git分支的方式非常轻量级,使分支操作几乎是即时的,并且在分支之间来回切换通常同样快。与许多其他VCS不同,Git鼓励经常分支和合并的工作流程,甚至在一天内多次。了解和掌握此功能将为您提供一个强大而独特的工具,并且可以完全改变您的开发方式。
分支简述
要真正理解 Git 的分支方式,我们需要退后一步,检查 Git 如何存储其数据。
您可能还记得在什么是 Git?中,Git 不会将数据存储为一系列变更集或差异,而是存储为一系列快照。
进行提交时,Git 会存储一个提交对象,其中包含指向所暂存内容快照的指针。此对象还包含作者的姓名和电子邮件地址、键入的消息以及指向直接出现在此提交(其父级或父级)之前的一个或多个提交的指针:初始提交为零个父级,正常提交为一个父级,合并两个或多个分支导致的提交为多个父级。
为了可视化这一点,让我们假设您有一个包含三个文件的目录,并且您暂存所有文件并提交。暂存文件会为每个文件计算一个校验和(我们在什么是 Git?中提到的 SHA-1 哈希),将该文件的版本存储在 Git 存储库中(Git 将它们称为 blob),并将该校验和添加到暂存区域: