git版本控制工具知识点总结(七)

94 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第22天,点击查看活动详情

前言

大家好呀,我是L同学。在上篇文章git版本控制工具知识点总结(六)中,我们学习了git版本控制工具中g如何从远程仓库clone代码、将代码push到远程仓库、从远程仓库获取最新的代码、Git标签(tag)等相关知识点。今天,在这篇文章中,我们将学习git版本控制工具中的知识点,包括Git提交对象、Git如何创建分支等相关知识点。

Git提交对象

几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。在进行提交操作时,Git 会保存一个提交对象。该提交对象会包含一个指向暂存内容快照的指针。该提交对象还包含了作者的姓名和邮箱、提交时输入的信息以及指向它的父对象的指针。首次提交产生的提交对象没有父对象,普通提交操作产生的提交对象有一个父对象。而由多个分支合并产生的提交对象有多个父对象。

Git 的分支,其实本质上仅仅是指向提交对象的可变指针。Git 的默认分支名字是 master,在多次提交操作之后,你其实已经有一个指向最后那个提交对象的 master 分支。master 分支会在每次提交时自动移动。Git 的 master 分支并不是一个特殊分支。它就跟其它分支完全没有区别。之所以几乎每一个仓库都有 master 分支,是因为 git init 命令默认创建它,并且大多数人都懒得去改动它。

Git创建分支

Git 是怎么创建新分支的呢?很简单,它只是为你创建了一个可以移动的新的指针。比如,创建一个 testing 分支, 你需要使用 git branch 命令:git branch testing。那么,Git 又是怎么知道当前在哪一个分支上呢?也很简单,它也是通过一个名为 HEAD 的特殊指针。git checkout testing

通常我们会在创建一个新分支后立即切换过去,这可以用 git checkout -b <newbranchname> 一条命令搞定。

为什么需要使用分支呢?在实际工作中我们会经常使用分支。例如,我们开发某个项目,在默认分支master上进行开发,实现项目的功能需求,不断提交。并且在一个大的版本完成时,发布版本,打上一个tag v1.0.0。继续开发后续的新功能,正在此时,你突然接到一个电话说有个很严重的问题需要紧急修补, 你将按照如下方式来处理:切换到tag v1.0.0的版本,并且创建一个分支hotfix。想要新建一个分支并同时切换到那个分支上,你可以运行一个带有 -b 参数的 git checkout 命令:git checkout –b hotfix。然后分支上开发、修复bug。我们可以在创建的hotfix分支上继续开发工作或者修复bug,当完成要做的工作后,重新打上一个新的tag v1.0.1。切换回master分支,但是这个时候master分支也需要修复刚刚的bug。所以我们需要将master分支和hotfix分支进行合并:git checkout master;git merge hotfix。