Git新手教程-标签、分支和合并(六)

2824145-901499b32360b1e6.jpg
title.jpg

前言

在之前的文章中,我们已经对仓库和提交已经有一定的了解了,在该篇文章中,我们将学习git taggit branchgit checkoutgit merge。下面简单的介绍一下几个命令的功能:

  • 使用 git tag 你可以为特定提交添加标签。标签是提交的额外标记,可以指示有用的信息。
  • 使用 git branch 你可以创建分支。用于并行开发项目的不同功能。而不会对哪些提交属于那个功能而感到困惑。
  • 使用 git checkout 你可以在不同的分支和标签之间进行切换。
  • 使用 git merge 可以将不同分支上的更改自动合并在一起

标签

我们先从最简单的标签开始。

假设我们已经向仓库提交了 A、B、C、D 四个commit,其中最后的一个提交也就是D,标志着我们项目的1.0版本。如何在Git中指出这一点呢?大家可能会觉得,我们可以在D的提交中说明这是我们的版本1.0。但是这并不是最理想的。Git像其他版本控制系统一样,提供了给提交打Tag(标签)的功能。也就是说我们可以给D提交打上标签。如下所示:

Tag(标签)一般表示比较重要的节点信息。

2824145-e82ce4dcad43c93a.jpg
Tag展示.jpg

即使更多的提交被添加到仓库中(在下图中,我们假设在D提交之后又陆续的提交了E、F、G三个提交),Tag(标签)仍然锁定着某个提交,如下所示:

2824145-a96ba9e37b54d5fc.jpg
Tag展示2.jpg

既然标签有着如此重要的作用,那现在我们来看看在Git中如何创建标签吧。在Git中标签有两种类型:轻量标签附注标签

  • 轻量标签在Git中,是不存储任何的信息,只是一个特定提交的引用。
  • 附注标签存储在Git数据中,且附注标签中包含了打标签者的名称、电子邮件,日期等信息,一般情况我们都会使用附注标签。
创建轻量标签

创建轻量标签的方式非常简单使用git tag+标签名称。如下所示:

git tag v1.0.0
创建附注标签

创建附注标签非常简单,需要在创建轻量标签的方式上,添加选项-a。如下所示:

git tag -a v1.0.0

通过上述方式,Git会运行你配置的文本编辑器输入标签信息。如下所示:

2824145-8ea44be6c92264ad.png
git_tag_3.png

上图中,我配置的是Sublime Text,当然你也可以使用git config --global core.editor命令配置你喜欢的编辑器。

除了使用上述方式创建附注标签以外,我们还可以使用 -m 选项来指定存储在标签中的信息,如果你添加了 -m 选项,那么Git就会绕过你配置的编辑器。如下所示:

git tag -a v1.0.0 -m "发布新版本v1.0.0"
轻量标签与附注标签的区别

在讲解了轻量标签与附注标签的使用之后,我们来看一下这两个标签的实际区别,我们可以通过git show命令查看实际的区别,我们先查看附注标签,如下所示:

2824145-c1b7bf2c9a0ec3a9.png
git_show_1.png

通过使用git show v1.0.0,你可以看到命令行的输出中是包含Tag信息的:

tag v1.0.0
Tagger: AndyJennifer <[email protected]>
Date:   Sun Sep 15 18:20:28 2019 +0800

发布新版本v1.0.0

而创建的轻量标签中,是不包含该信息的,如下所示:

2824145-274c2943992112fc.png
git_show_2.png

需要注意的是,创建的标签总是与commit进行绑定的。比如在上图中,标签是指向 441796... 这个提交的。

标签的删除

要删除掉本地的标签,我们可以使用命令 git tag -d <tagname> 。例如使用下面的命令删除标签:

git tag -d v1.0.0
Deleted tag 'v1.0.0' (was 3132ff5)

其中 -d 选项表示delete(删除)

向以前的提交的 commit 添加标签

通过运行 git tag -a v1.0.0 ,我们可以给最近的commit添加标签,但是如果你想向仓库中很久之前的commit添加标签呢?很简单!我们可以在原来的命令基础上,直接添加对应的commit的 SHA 即可。

使用 git log 命令查看历史提交记录。这里我们可以提供完整的SHA,或SHA前七个 字符,

git tag -a v1.0.0 abd12d0

在上述命令中,我们为 abd12d0 这个提交打上了标签。

分支

在Git中,分支就像是科幻电影中的平行世界。每个平行世界都运行在独立的环境中,在正常情况下,每个平行世界中所作的事,对于现实世界或另一个平行世界是无感知的且不影响的。在某些特殊的情况下,平行世界与现实世界可能重合,那么就会产生混乱与冲突。那这个时候就需要我们来解决这些冲突与问题。

2824145-9abd4b16881e58c0.jpg
平行世界.jpg

扯太远了,分支在Git中,主要用于项目的开发或者对项目进行修正。因为所有的修改都是在分支中进行,所以并不会影响到项目(项目一般在主分支上,一般是 master 分支)。当我们在分支中进行更改后,我们可以将分支中的内容合并到分支上,这种分支组合过程,称为合并(merge)。后续我们会一一讲解这些内容。

那么接下来,我们来看看Git中分支的使用方式和重要的概念。

master 分支与 HEAD 指针

在下图仓库中,我们创建了一些提交,并在提交D中创建了名为 v1.0 的标签,除了标签以外还包含一个隐藏的 master 分支。在我

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值