前言

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

  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> //推送到远程仓库
12

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

git push origin --tags  12

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

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

2. 查看标签

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

git show <tagName>
1

查看本地所有 tag :

//下面两个命令都可以
git tag
git tag -l
123

查看远程所有 tag:

git ls-remote --tags origin12

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> //推送到远程仓库
123

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

git tag -d <oldTagName>
git push origin :<oldTagName>
git tag <newTagName>
git push origin <newTagName> //推送到远程仓库12345

5. 检出标签

命令如下:

git checkout -b <branchName> <tagName>
1

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

Git - 命令行 - 使用 Tag 标记你的代码相关推荐

  1. git对指定commitid 打tag_Git-命令行-使用 Tag 标记你的代码

    前言 正文开始之前,我想我们需要弄明白几个问题: 1.tag 是什么? 2.使用tag 的好处? 3.tag 和 branch 的区别以及使用场景? tag 是什么? tag , 翻译过来是标签的意思 ...

  2. Git-命令行-使用 Tag 标记你的代码

    前言 正文开始之前,我想我们需要弄明白几个问题: tag 是什么? 使用tag 的好处? tag 和 branch 的区别以及使用场景? tag 是什么? tag , 翻译过来是标签的意思,顾名思义, ...

  3. Git命令行介绍和使用说明(持续更新)

    Git命令行介绍和使用说明(持续更新) Git命令行介绍和使用说明(持续更新) 文档名称 Git命令行介绍和使用说明会 创建时间 2012/8/23 修改时间 2012/8/23 创建人 Baifx ...

  4. git命令行完全解读

    BY 张建成(prettyEcho@github) 除非另行注明,页面上所有内容采用知识共享-署名(CC BY 2.5 AU)协议共享 原文地址deep.js , 欢迎 评论 和 star ?? 欢迎 ...

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

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

  6. zbb20190109 git命令行解决冲突文件步骤

    git命令行解决冲突文件步骤 方法一(推荐使用): git pull 出现冲突后丢弃本地冲突文件修改,采用远程文件覆盖本地文件 git checkout  [文件路径] 例:git checkout  ...

  7. macos安装git命令行_MAC OS git客户端安装及操作

    1. 下载安装mac os 版本的git客户端及相关可视化软件 1.1 从git官网上下载匹配的git客户端.pkg格式的包,然后在系统偏好设置-> 安全性与隐私中打开系统默认禁止安装的这个程序 ...

  8. 如何用git命令行上传本地代码到github

    如何用git命令行上传本地代码到github 2016年09月19日 16:10:36 阅读数:9337 注意:安装的前提条件是配置好git的相关环境或者安装好git.exe,此处不再重点提及 上传的 ...

  9. 关于使用 git 命令行来和“码云”账号上的项目互通过程的基础步骤

    前提:已经有码云账号,电脑已经安装了git工具. (1)在码云账号上登陆自己的账号,创建一个新的项目. (2)在自己的本地磁盘下随便创建一个文件夹(例如起名为:mayun),用来存放从码云上拉下来的项 ...

  10. 如何使用git命令行上传项目到github

    参考文献: 如何使用git命令行上传项目到github 感谢楼主分享!

最新文章

  1. mongodb的简单使用
  2. 快的打车联合创始人兼技术副总裁闻诚:CTO要有“334”能力
  3. 可用于在 Microsoft.NET Framework 4.0 中的 ASP.NET 浏览器定义文件的修补程序
  4. [线段树] Jzoj P1214 项链工厂
  5. 【mysql】mysql优化
  6. 实战~~整个网络无法浏览,提示网络不存在或者尚未启动
  7. 判断字符串是否构成回文_构成字符串回文的最小删除数
  8. 计算机二维全息图原理,三维信息加密如何使用计算全息进行
  9. php 上传大文件400,PHP fastcgi模式上传大文件(大约有300多K)报错
  10. 西瓜书+实战+吴恩达机器学习(二十)随机算法(拉斯维加斯方法、蒙特卡罗方法)
  11. 择师论(怎么有效的向别人学习)
  12. 湘潭大学计算机科学,湘潭大学计算机科学和技术一级学科.doc
  13. python与r语言哪个好学_python和r哪个难一点
  14. Linux内核配置和编译过程详解
  15. 带你走进Choerodon猪齿鱼的知识管理
  16. linux系统怎么关闭屏保,Linux关闭屏保
  17. 1、 利用AUTO CAD脚本写一个插件,可以读取CAD中的图形公式,并输出为一个Excel计算表格...
  18. VPS云主机是什么?有什么优势?
  19. 使用设计模式出任CEO迎娶白富美(2)--老板就喜欢聊设计模式?
  20. 2亿简历信息泄露-你的信息还安全吗?

热门文章

  1. 35+大龄程序员被清退?
  2. 狗、油腻、保温杯的中年
  3. 【数字信号处理】基于matlab GUI数字信号处理系统【含Matlab源码 1088期】
  4. 计算机英语会话实用电脑英语,计算机英语会话(MP3+中英字幕) 第41期:实用电脑英语...
  5. idea新建一个java项目_创建第一个Java项目(Create First Java Project)
  6. 10寸 nuc972_新唐ARM9之NUC972学习历程之系统的搭建和BSP包的使用
  7. 波普尔心智格列高利心智_心智与人工智能理论
  8. linux 数据转为曲线图,Linux系统下生成TPS,ResponseTime曲线图
  9. 记一个单双引号的特别用法
  10. c语言 json_dumps,关于json.dumps中的参数,例如ensure_ascii