前言

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

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

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

  • 使用tag 的好处?
    tag 的存在,是因为我们需要这种标记的功能。目前的项目开发中,当发布版本时 tag 就派上用场了。例如 v1.0.1,v1.0.2…
    另外,git 提供了 tag 的增删改查一系列操作,在 tag 的使用上,可谓非常之方便。

  • tag 和 branch 的区别以及使用场景?
    想到这里,你可能觉得 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 的简单使用

以下命令都是我使用 tag 过程中一般会使用到的,可以说都是常用命令。

1.创建标签

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

git tag <tagName> //创建本地tag
git push origin <tagName> //推送到远程仓库
  • 1
  • 2

若存在很多未推送的本地标签,你想一次全部推送的话,可以使用一下的命令:

git push origin --tags
  • 1
  • 2

以上是基于本地当前分支的最后的一个 commit 创建的 tag ,但是如果不想以最后一个,只想以某一个特定的提交为 tag ,也是可以的,只要你知道 commit 的 id。

git log --pretty=oneline //查看当前分支的提交历史,里面包含 commit id
git tag -a <tagName> <commitId>
  • 1
  • 2

2.查看标签

查看本地某个 tag 的详细信息:

git show <tagName>
  • 1

查看本地所有 tag :

//下面两个命令都可以
git tag
git tag -l
  • 1
  • 2
  • 3

查看远程所有 tag:

git ls-remote --tags origin
  • 1
  • 2

3.删除标签

本地 tag 的删除:

git tag -d <tagName>
  • 1

远程 tag 的删除:

git push origin :<tagName>
  • 1

4.重命名标签

这个本质上是删除掉旧名字 tag ,然后再新建新名字 tag ,然后实现重命名的作用。

如果 tag 只存在本地,那么只需要删除本地的旧名字 tag ,然后新建新名字 tag:

git tag -d <oldTagName>
git tag <newTagName>
git push origin <newTagName> //推送到远程仓库
  • 1
  • 2
  • 3

若已经推送到远程了,那么不仅要删除本地的,还要删除远程的,再重新创建和推送:

git tag -d <oldTagName>
git push origin :<oldTagName>
git tag <newTagName>
git push origin <newTagName> //推送到远程仓库
  • 1
  • 2
  • 3
  • 4
  • 5

5.检出标签

命令如下:

git checkout -b <branchName> <tagName>
  • 1

因为 tag 本身指向的就是一个 commit,所以和根据 commit id 检出分支是一个道理。
但是需要特别说明的是,如果我们想要修改 tag 检出代码分支,那么虽然分支中的代码改变了,但是 tag 标记的 commit 还是同一个,标记的代码是不会变的,这个要格外的注意。

---------------------
作者:DRPrincess
来源:CSDN
原文:https://blog.csdn.net/qq_32452623/article/details/73949509?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!

Git-命令行-使用 Tag 标记你的代码的更多相关文章

  1. git命令行提交并且同步到远程代码库

    远程代码库以github为例 1.打开 git bash 2.进入项目目录 cd /e/myGitProjects/test 3.提交到本地git仓库 git add -Agit commit -m ...

  2. Git命令行(转用于学习和记录)

    Git命令行介绍和使用说明(持续更新) 参见:<Git 中文简体教程> 一. 命令“git”或者“git help”查询常用命令 [add]: “git add”——不但是用来添加不在版本 ...

  3. 【重要】使用Git命令行上传到GitHub上

    [本人GitHub账号:] 用户名:chenhongshuang 密码:shuangshuang6300 邮箱:2452420371@qq.com 进入GitHub账号后 1·新建项目文件名称例dem ...

  4. windows下使用TortoiseGit代替Git命令行操作

    windows下使用TortoiseGit代替Git命令行操作 大家在使用svn的时候,都非常喜欢使用小乌龟,也就是TortoiseSVN:那么git也有小乌龟版本,即TortoiseGit. 1.安 ...

  5. git命令行工作的正确姿势

    git命令行创建并提交新分支到mater分支的常规步骤 git branch new_branch git status 查看修改的文件 git add changed_files git commi ...

  6. git 命令行

    在使用 git 命令行之前需要下载安装软件官方网站:https://git-scm.com/window 或者 mac 等其它版本自行下载 使用方法一:安装后在项目文件夹中右键菜单会有个 Git Ba ...

  7. git命令行工作环境配置【转】

    转自:http://www.cocoachina.com/ios/20171115/21163.html 本文为CocoaChina网友whf5566投稿 前言 笔者一直使用git的图形化工具sour ...

  8. git 命令行下浏览器tig使用记录

    git 命令行下浏览器tig使用记录 tig 是一款优化 git 命令行的工具,使 git 命令行更加的便捷人性化 .如果用习惯了,会上瘾. 以下是一些使用记录: 安装成功后,在 Repo 文件夹下, ...

  9. Git的基本使用方法和安装&心得体会(使用git命令行)

    这是补发的,使用命令行操作的. (1)选择本地repository的路径 找到后点鼠标右键,选择git bash here. (2) clone到本地 在命令行输入 git clone ADDRESS ...

随机推荐

  1. ScrollView嵌套ListView、GridView,进入页面显示的位置并不是在最顶部,而是在中间部分问题

    在Android项目的开发中,经常会遇到一些布局,可能需要在ScrollView中嵌套ListView或.GridView来实现, 是在使用的过程总又遇到了一个新的问题,就是如果在ScrollView ...

  2. django 与 Vue 的结合使用说明

    1.第一步有一个Django项目 先是创建一个Django项目 django-admin startproject demo 然后创建一个application应用 python manage.py ...

  3. (网页)jQueryAJAXtimeout超时问题详解(转)

    先给大家分析下超时原因: 1.网络不通畅. 2.后台运行比较慢(服务器第一次运行时,容易出现) 超时结果:JQ中 timeout设置请求超时时间. 如果服务器响应时间超过了 设置的时间,则进入 ERR ...

  4. H5——简易马祖

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  5. 数据库之mysql篇(5)—— 【转载】mysql练习题

    原帖地址:http://www.cnblogs.com/wupeiqi/articles/5748496.html 范例数据sql: /* Navicat Premium Data Transfer ...

  6. 暂别SQL Server,转战MySQL和Redis

    机缘巧合下找到一个愿意提供学习MySQL和Redis机会的岗位,于是要暂别SQL Server了. 后续一段时间会陆续总结三年来SQL Server相关的工作经验,当做是暂别前的总结.

  7. c/c++ 标准容器 forward_list resize 操作

    c/c++ 标准容器 forward_list, resize, 重新定位迭代器 1,forward_list特有的方法: insert_after emplace_after erase_after ...

  8. 特别篇:Hyper-v群集模拟实战演示

    介绍 由于前面几张的都是直接整理了下 九叔的hyper-v电子书发上来的,个人觉得他写的不是最详细,因此今天我按照自己的实际情况来写个模拟的实战演示.所有的东西都通过VMware WorkStatio ...

  9. python数据类型分类以及运算类型

    一.python数据类型 目录: 1.数字(整数.小数) 2.字符串(单引号.双引号.三引号) 3.元组 #元素确定之后不能修改 4.列表 #元素可以修改 5.集合  #不讲顺序,得到的结果没有重复元 ...

  10. LeetCode算法题-Convert Sorted Array to Binary Search Tree(Java实现)

    这是悦乐书的第166次更新,第168篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第25题(顺位题号是108).给定一个数组,其中元素按升序排序,将其转换为高度平衡的二叉 ...