通常在软件发布的时候会打一个tag,用于标注这次发布的相关信息, 这样做的好处是,将来如果这个版本出现了问题,可以通过tag迅速定位到当前版本,进行错误修复。

1. 新建tag

$ git tag v1.6

v1.6 就是这个tag的名称,通常以版本号命名。注意:tag是打在最近的一次Commit记录上的,比如我最近一次提交记录的Commit ID是 7fd77215642fe36e73674f604ef49a0097d3c0d3,那么执行完 git tag v1.6命令后,tag就打在了这个Commit ID上。

还可以通过加上 -a 参数来创建一个带备注的tag, 备注信息由 -m 指定:

$ git tag -a v1.6 -m "publish v1.6 version"

2. 列出已有的tag

$ git tag
v1.
v1.
v1.
v1.
v1.-bugfix
v1.
v1.

还可以加上 -l 命令使用通配符来过滤tag, 这在tag列表比较多的时候很有用:

$ git tag -l "v1.3*"
v1.3
v1.3-bugfix

3. 同步tag到远程服务器

$ git push origin v1.
Total (delta ), reused (delta )
To https://github.com/yongdaimi/AndroidApiTest.git
* [new tag] v1. -> v1.

和提交代码一样,tag默认创建是在本地的,需要进行推送才能到达远程服务器,如果要推送本地所有tag,可以使用:

$ git push origin --tags

4. 查看某个tag的详细信息

$ git show v1.
commit 7fd77215642fe36e73674f604ef49a0097d3c0d3 (HEAD -> master, tag: v1., origin/master, origin/HEAD)
Author: nisha_chen <nisha_chen@realsil.com.cn>
Date: Fri Oct :: + android: update current version to 1.6 diff --git a/app/build.gradle b/app/build.gradle
index 55786a4..b100875
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -, +, @@ android {
applicationId "com.yongdaimi.android.androidapitest"
minSdkVersion
targetSdkVersion
- versionCode
- versionName "1.4"
+ versionCode
+ versionName "1.6"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {

使用git show 加上 tag名来查看指定tag的详细信息。

5. 为历史版本添加tag

$ git tag v1.1.1 03f98856b1a422b5604fc1337500b756513e785c

利用git log 查看结果:

commit 093dafc3e88d8708fa26ac94919d901024878209 (tag: v1.)
Author: nisha_chen <nisha_chen@realsil.com.cn>
Date: Fri Oct :: + android: update current version to v1. commit 03f98856b1a422b5604fc1337500b756513e785c (tag: v1.1.1)
Author: nisha_chen <nisha_chen@realsil.com.cn>
Date: Fri Oct :: + android: update current version to V1. commit b16b7376506439d5dd649a8352e5ccb78b455000 (tag: v1.)
Author: nisha_chen <nisha_chen@realsil.com.cn>
Date: Thu Oct :: + Bluetooth: Add a interface about scan bluetooth device

也可以使用下列命令实现:

$ git tag -a v1.2 9fceb02 -m "my tag"

9fc3b02 是某次Commit ID的前7位,Git不要求写全所有的Commit ID数字。

6. 删除tag

$ git tag -d v1.6
Deleted tag 'v1.6' (was 03f9885)

这样只是把本地的tag删除掉了,如果要同时删除服务器上的tag,可以使用

$ git push origin :refs/tags/v1.
To https://github.com/yongdaimi/AndroidApiTest.git
- [deleted] v1.

7. 利用tag功能切换并修改某个历史版本

$ git tag
v1.
v1.
v1.
v1.3
v1.

这里修改v1.3版本:

$ git checkout -b feature-bugfix-v1. v1.
Switched to a new branch 'feature-bugfix-v1.3'

语法是:git checkout -b [branchName] [tagName], 在 feature-bugfix-v1.3 这个分支上修改完毕后切回 master分支并合并 bugfix 分支:

$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'. $ git merge feature-bugfix-v1.
Merge made by the 'recursive' strategy.
test.txt | +
file changed, insertion(+)
create mode test.txt

参考链接:
1. git 打 log
2. git 使用技巧

Git: git tag 使用小结(给发布版本打标记,切换并修改某个历史版本)的更多相关文章

  1. tortoiseSVN如何回滚(切换至)某个历史版本?

    tortoiseSVN如何回滚(切换至)某个历史版本? 1.右键需要回滚的项目,tortoiseSVN - >show log 2.右键需要回滚的历史版本,选择revert to this re ...

  2. idea上查看本文件svn修改的历史版本

    如上图依次点击,得到下图,比较即可:

  3. git回退到某个历史版本

    1. 使用git log命令查看所有的历史版本,获取某个历史版本的id,假设查到历史版本的id是139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96. 2. git res ...

  4. git revert 后悔了 还原修改前的版本 + git 常用命令

    昨天手残 然后在GitHub for windows 上点了revert 然后就给重置了 更手残的是又给同步了 .  但是 GitHub 会保留之前的版本 . 只要删掉本次修改就可. 解决方案:  g ...

  5. 【git】git回退到某个历史版本(强行推送代码)

    1. 使用git log命令查看所有的历史版本,获取某个历史版本的id,假设查到历史版本的id是139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96. 2. 3. 把修改推 ...

  6. 『现学现忘』Git基础 — 24、Git中查看历史版本记录

    目录 1.查看详细的历史版本记录 2.简化显示历史版本记录 3.历史版本记录常用操作 (1)指定查看最近几次提交的内容 (2)以简单图形的方式查看分支版本历史 (3)翻页与退出 4.查看分支相关的版本 ...

  7. Hadoop概念学习系列之如何去找到历史版本的Hadoop发行包(三十四)

    如何去找到历史版本的Hadoop发行包 找到Hadoop历史版本 这里我需要的Hadoop版本是2.0.3.打开hadoop的下载页面 http://www.apache.org/dyn/closer ...

  8. svn回到某个历史版本的做法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 一.在选中的文件上弹出svn的右键菜单,单击"Updateto revision"菜单项,如下图: ...

  9. Ubuntu修改默认Python版本,你了解多少~

    目录 1 查看Python版本 1.1 查看装有哪些版本 1.2 查看默认版本 2 修改Python默认版本 2.1 基于文件修改 2.2 基于软链接修改 1 查看Python版本 1.1 查看装有哪 ...

随机推荐

  1. 个人第5次作业:Alpha2项目的测试

    这个作业属于哪个课程 <课程的链接> 这个作业要求在哪里 <作业要求的链接> 名字 易林 学号 201731062134 团队名称 <巧克力王子和六个小矮人> 第一 ...

  2. python开发基础-Pycharm快捷键

    1.编辑(Editing) Ctrl + Space 基本的代码完成(类.方法.属性)Ctrl + Alt + Space 快速导入任意类Ctrl + Shift + Enter 语句完成Ctrl + ...

  3. 「NOI2012」骑行川藏

    「NOI2012」骑行川藏 题目描述 蛋蛋非常热衷于挑战自我,今年暑假他准备沿川藏线骑着自行车从成都前往拉萨. 川藏线的沿途有着非常美丽的风景,但在这一路上也有着很多的艰难险阻,路况变化多端,而蛋蛋的 ...

  4. Oracle 数据库中的GROUP BY与HAVING

    一.GROUP BY GROUP BY语句用来与聚合函数(aggregate functions such as COUNT, SUM, AVG, MIN, or MAX.)联合使用来得到一个或多个列 ...

  5. Laravel —— 自定义登录

    Laravel 中自带了 Auth 模块 默认用 email 登录,并有固定的表字段 有时需要根据项目需求,修改 Auth 功能 1.生成 Auth 执行 php artisan make:auth ...

  6. python爬取动态网页数据,详解

    原理:动态网页,即用js代码实现动态加载数据,就是可以根据用户的行为,自动访问服务器请求数据,重点就是:请求数据,那么怎么用python获取这个数据了? 浏览器请求数据方式:浏览器向服务器的api(例 ...

  7. 学习Spring-Data-Jpa(二)---JPA基本注解

    基本注解 1.@Entity :用于添加在实体类上,定义该JAVA类成为被JPA管理的实体,将映射到指定的数据库表.如定义一个实体类Category,它将映射到数据库中的category表中. 2.@ ...

  8. Kibana<6.6.0代码执行漏洞复现

    更多内容,欢迎关注微信公众号:信Yang安全,期待与您相遇. 使用docker快速部署环境docker pull kibana:6.5.4docker pull elasticsearch:6.5.4 ...

  9. learning java 字符串常用操作

    // 字符串索引取值 "; System.)); // 字符串比较 "; "; "; System.out.println(s1.compareTo(s2)); ...

  10. HTML5自定义属性操作

    一.自定义属性(html5标准)data-属性名称="属性值" 自定义属性的名称驼峰式命名规则需要用-隔开 自定义属性名称如果连在一起写,大写会自动转为小写 data-user=& ...