Git 从众多版本控制系统中脱颖而出。 为何 Git 的分支模型如此出众呢?
过去大多数版本控制系统:它们在创建分支时,将所有的项目文件都复制一遍,并保存到一个特定的目录。 完成这样繁琐的过程通常需要好几秒钟,有时甚至需要好几分钟。所需时间的长短,完全取决于项目的规模。
Git :任何规模的项目创建新分支这一操作几乎能在瞬间完成,并且在不同分支之间的切换操作也是一样便捷。 同时,由于每次提交都会记录父对象,所以寻找恰当的合并基础(译注:即共同祖先)也是同样的简单和高效。
具体git分支对比于传统的复制优势:节省空间,不需要每一次都复制所有的。每一次commit都是保存整个项目,不会因为某次失误而丢失源码(只会计算变化的文件校验和保存仓库,对未变化的不改变引用)
一、深度理解git分支原理
Git 保存的不是文件的变化或者差异,而是一系列不同时刻的 **快照** 。
*快照:包含了当前项目所有文件的状态。这意味着Git会记录每个文件的完整内容,而不是文件之间的差异或变化。因此,每个提交都代表了一个项目在特定时刻的完整状态。*
快照举例:假设初始时,你的项目包含两个文件:file1.txt 和 file2.txt,内容分别如下:
file1.txt:
Hello, this is file 1.
file2.txt:
Hello, this is file 2.
现在,对 file1.txt 进行了修改,将内容改为:
file1.txt:
Hello, this is file 1. Updated!
当提交这个修改时,Git会创建一个新的快照对象,其中包含了file1.txt 和 file2.txt 的最新状态。这个快照会记录项目的当前状态,即: