Git 中 branch 与 tag 的区别和使用场景

正文开始之前,我想我们需要弄明白几个问题:

  1. tag 是什么?
  2. 使用 tag 的好处?
  3. tag 和 branch 的区别以及使用场景?

tag 是什么

tag , 翻译过来是标签的意思,顾名思义,标签是为了标记某种事物。 它实际上是 Git 版本库的一个快照,指向某个 commit 的指针。

使用tag 的好处

tag 的存在,是因为我们需要这种标记的功能。目前的项目开发中,当发布版本时 tag 就派上用场了。例如 v1.0.1,v1.0.2… ,发布的时候,只需要在 master 中打上一个标签就可以了,而不需要一个版本对应一个分支。

区别和使用场景

想到这里,你可能觉得 tag 和 branch 有点相似。没错,的确是有点像,但是它们的职责分工和本质都是不同的。

tag 对应某次 commit, 是一个点,是不可移动的。

branch 对应一系列 commit,是很多点连成的一根线,有一个HEAD 指针,是可以依靠 HEAD 指针移动的。

所以,两者的区别决定了使用方式,改动代码用 branch ,不改动只查看用 tag。

tag 和 branch 的相互配合使用,有时候起到非常方便的效果,例如 已经发布了 v1.0 v2.0 v3.0 三个版本,这个时候,我突然想不改现有代码的前提下,在 v2.0 的基础上加个新功能,作为 v4.0 发布。就可以 检出 v2.0 的代码作为一个 branch ,然后作为开发分支。

注意

需要说明的是,创建 tag 是基于本地分支的 commit,而且与分支的推送是两回事,就是说分支已经推送到远程了,但是你的 tag 并没有,如果把 tag 推送到远程分支上,需要另外执行 tag 的推送命令。

点击查看关于tag的操作总结

参考

本文参考自:https://blog.csdn.net/lcgoing/article/details/86241784