前言
Git是一个我们最常使用用代码管理工具,它的命令操作快速而又优雅,分支开发特性形成的独特git工作流模式也非常符合实际工作开发需求。这篇文章用于整理汇总我在实际工作过程中遇到的分支操作处理情况。
整理前汇总几个概念:
-
hash算法
hash算法是一个开源的文件加密算法,它的特性在于不管多大文件的输入,文件在没有变动的情况下,总是得到相同的输出。而文件只要变动一点,它得出的hash值就完全不同。hash 算法具有不可逆性。Git 当中使用 hash 算法作为 git 的 文件变动commit成的快照的版本标识。 -
git的分支和 commit 的操作实质上是对**文件快照(snapshot)**的处理
我们在工作区的 add&commit 操作,本质上是保存了当前文件的一组快照。我们所做的分支切换改变工作区内容,本质上是移动本地的HEAD指针指向快照的位置,从而复现不同的工作区内容。
-
本地与远程 HEAD 和 origin
前文提过,分支的本地移动,实质上是移动 git 文件当中的 HEAD 指针指向文件的快照。所以HEAD所代表的的就是本地的当前操作的分支。我们经常操作过程中提到的 origin 实际上是本地 git 文件关联的远程仓库的昵称。origin是你在关联远程仓库时候没有起名字时git默认的名称。因此再使用 git fetch origin/master 意思就是拉取 git 关联的名为 origin 远程仓库下面的master分支到本地。可以使用git remote来查看本地所关联的远程仓库别名。