Git(二)之版本与分支管理

概要

Git实现版本控制的一个重要基础是其Git分支功能,分支本质上是一个指针,它指向某个版本,当有新的版本提交时,只需移动该指针到最新的版本即可,同时记录该指针的移动轨迹,这样便形成了一条时间线,可以实现对所有版本信息的管理和控制。


当你初始化一个Git仓库时,Git默认建立了一个分支,通常为master分支,之后提交的所有版本仅仅对该分支指针进行了移动。但是在项目的实际开发过程中,会涉及到频繁的修改以及提交,这样会使得master分支指针移动地十分频繁,因此通常会新建立一个分支dev,用于阶段性的工作,这一阶段的工作结束后,将dev分支的工作汇总到master分支上,所以master分支较为整洁且维护的版本往往功能有较大的增加。例如,对于一个游戏项目,master分支上维护着游戏发布的版本V0.1,v0.5,v1.0等,而对于某一发布版本在开发过程中通常是在dev分支上进行的。

分支的建立

Git中分支的建立非常简单,git branch dev用于建立一个分支,即新建一个指针,git checkout dev将当前分支切换为dev,即接下来操作的是dev分支的指针,git branch列出当前仓库中的所有分支,即所有指针。
在这里插入图片描述


版本信息的查看

举个例子说明,现在我在master主分支时间线上提交了两次,这样便形成两个版本,这时我们新建一个新的dev分支,分别在masterdev分支上查看版本信息。
在这里插入图片描述

在这里插入图片描述
git log命令可以查看当前分支上的版本信息,可以看到,master分支和dev分支上的版本信息是一样的,此时的版本间的关系是这样的:
在这里插入图片描述

可见git log命令会列出当前分支指针前的所有版本信息,要是有版本回退操作,会使分支指针往回移动,git log命令是无法列出回退前的那些版本信息的。

关于git log命令的详细参数如下:
git log [参数],参数如下:
在这里插入图片描述


版本的回退

git中回退的某一版本是非常方便的,仅仅需要将分支指针指向指定的版本id即可,可以使用git reset commitId命令实现。例如,我们在dev分支上,需要将当前的版本回退的上一版本,即69842b时,在这里插入图片描述
此时的版本示意图如下:
在这里插入图片描述
可以看到git reset命令分支指针之前的版本,要是我们想保留所有的版本信息,我们可以使用git revert commitId命令,该命令会保留所有的版本信息,同时新建一个版本,这个版本由两部分合并而成,一部分是指定commitId提交之前的内容,另一部分是commitId之后的所有操作,这两部分合并,可见git revert命令保留了中间的版本信息。
例子如下:
git revert之前:
在这里插入图片描述
git revert之后:
在这里插入图片描述
此时的示意图如下:
在这里插入图片描述


分支的合并

git中分支的合并有两种情况,一种是分支间没有出现分叉,另一种是分支间出现了分叉。
分支的合并用命令git merge
当没有出现分叉时,此时的合并过程如下图,仅仅将master分支指针移动到dev分支指针处,这种方式称为fast-farward
在这里插入图片描述
可以看到,将dev分支合并到master分支后,master指针和dev指针指向了同一个版本,且这两个分支维护的版本信息是一样的了。
在这里插入图片描述
当然,我们也可以不使用fast-forward方式,添加参数--no-ff即可,非fast-forward模式下,会形成一个新的commitId,并且master分支指针会指向它。示意图如下:
在这里插入图片描述
结果如下:
在这里插入图片描述

当出现分叉时,例如,在master分支上提交了一个版本,同时我在dev分支上继续工作也提交了一个版本,这时候合并就出现了分叉,此时master上的版本信息如下
在这里插入图片描述
dev分支上的版本信息如下:
在这里插入图片描述
git merge合并后的版本信息如下,可以看到这种情形下的合并是安装没有分叉时的--no-ff方式合并的,即会生成一个新的commitId
在这里插入图片描述
关于Git中的分支管理的内容差不多就这些了,关于分支相关命令的介绍以后再讲解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值