在TFS中使用Git Tags(标签或标记),实现代码的版本管理
一、概述:
与TFVC中标记(Label)一样,Git的标签(Tag)也是TFS系统的代码管理中非常重要的一个版本管理工具。使用标签,我们可以每个时间点的代码注上一个通俗、并且容易记忆的名称(例如标签的名称为V1.0,V2.0.0.0等),方便开发人员对代码库中的版本有一个直观的了解。我们可以依照标签,签出任一时间点的代码。下面我们结合TFS 2018和Visual Studio 2017来验证如何实现Git的标签功能。
二、创建标签
可以通过Visual Studio、命令行,浏览器等多种渠道创建标签。
1. 在VS 2017中创建标签
在Visul Studio的团队资源管理器中,打开Git代码的历史记录,可以使用鼠标右键点击任一提交,并以此为基础新建一个标签,例如下图中我们为最新的代码创建一个名称为“V2.0”的标签。
Figure – 在Git历史记录中新建标签

Figure - 输入标签的名称和说明文字,点击“创建标记”
这样,一个名称为”V2.0“的标签就已经创建在本地的代码库中了,你可以通过刷新Git历史记录查看到新建的标签。当然,此时标签还没有同步到服务器上,我们在后面会说明如何发布标签到服务器。
2. 在TFS Web Access中创建标签
TFS系统是一个可是化程度非常高的服务器软件,和微软所有的其他产品一样,为用户带来操作的便捷性。你可以使用浏览器,非常方便和快速的直接在服务器上创建一个标签,操作方式如下图:

Figure - 在TFS的Git代码库中,打开代码库的历史记录,右键点击一个提交后,新建标记

Figure - 输入标记的名称和说明后,就点击创建按钮
3. 在命令行中创建标签
在命令行中,使用“Git tag –a tagname –m “comment”可以快速创建一个标签。需要注意,命令行创建的标签只存在本地Git库中,还需要使用Git push –tags指令发布到TFS服务器的Git库中。

4. 为一个特定的提交创建标签
上面的目录都是基于最新的代码(HEAD)创建标签,实际上经常还需要在变更历史记录中,为之前提交的代码创建标签。
我们可以在标签的名称后面填写提交编号既可以,例如git tag –a tagname commitID –m “comments”,如下图:

5. 在命令行中修改标签名称
如果你发现上面创建的标签名称不合适,你也可以在命令行中使用-f参数复制一个新的标签,再使用-d参数删除原来的标签,从而达到修改标签的目的,如下图:

二、标签同步
1. 将本地标签的标签上传的服务器
下面的命令将本地的所有标签都提交到服务器上:
Git push –-tags


2. 提交单个标签
下面的目录,修改tagname以后,可以将指定的标签提交到服务器中:
Git push origin tagname

4. 将TFS中创建的标签同步到本地
Git pull

参考资料:
1. https://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80-%E6%89%93%E6%A0%87%E7%AD%BE
2. http://www.cnblogs.com/danzhang (微软ALM MVP 张洪君)
三、删除标签
删除本地标签:git –d <tag name>

删除远程库中的标签git push orgin :V1.1
注意,标签的操作需要区分大小写,否则可能出错。

你也可以使用浏览器在Web界面的可视化界面中,直接在TFS服务器上删除标签,如下图:

四、按照标签获取代码
git checkout tagName

五、标签和分支的区别
标签(tag)和分支(branch)是Git版本管理中经常容易混肴的概论,开发人员不太容易弄明白什么样的场景中需要对应的功能。
从概论上来讲:
- 标签一个特定版本的名称。标签总是指向一个相同的对象,例如提交版本。标签指向的版本是不会被改变的。
- 分支是代码开发支线的名称。新的提交按照时间线堆积在分支中,从而实现代码库的更新和软件功能的变化。
从技术上来讲:
- 标签存储在Git库的/refs/tags目录中。它指向一个特定的提交或标签。
- 分支存储在Git库的/refs/heads中,它只能指向到提交对象。
从应用场景上来讲:
- 标签经常用来标记软件版本的名称。例如当我们发布软件版本V1.0时,我们会在对应的分支中为当前最新的代码创建一个名称为“V1.0”的标签。在一个分支中,随着软件发布工作的推进,通常存在许多的记录了不同版本名称的标签。使用标签,开发人员可以快速签出需要的代码,用来重新问题、调试缺陷。
- 分支通常在多个团队、多条功能/需求同步开发的情况下使用。开发团队基于一个初始版本(例如master)创建自己的开发分支(例如dev),在开发分支中签入自己的代码,避免影响其他团队的代码,避免修改master中国已经趋向稳定的软件代码;当开发团队在自己的分支中完成了新的软件功能后,将修改后的代码合并到主干分支中,与其他团队实现集成测试。
通过灵活运用标签和分支的功能,即便软件系统多么复杂、团队成员众多、需求频繁变更,我们也可以将软件系统的代码结构整理得条理有序,时刻保持清晰的思路,减少发布过程中的风险和问题。
六、其他常见操作
1. Git tag:显示所有标签
2.Git show taname:查看标签的详细信息
2. Git checkout commitID:根据提交ID获取代码
--End--
在TFS中使用Git Tags(标签或标记),实现代码的版本管理的更多相关文章
- 如何在 TFS 中使用 Git
对 Charley Blog 的代码进行版本控制的想法由来已久,在代码建立之初其实已经使用过 TFS 进行控制,只是后期没能好好用起来,加之后来系统环境的变化导致TFS连接丢失,便算是正式放弃了版本控 ...
- 开发团队在TFS中使用Git Repository (一)
在研发团队中,代码版本管理是最为基础的必要工具.个人使用过的版本管理工具有SVN.VSS.ClearCase.TFS.Git,从团队的角度和使用角度来说,个人倾向于与使用TFS作为团队的基础工具.首先 ...
- [转]如何在 TFS 中使用 Git
本文转自 http://www.cnblogs.com/stg609/p/3651688.html 对 Charley Blog 的代码进行版本控制的想法由来已久,在代码建立之初其实已经使用过 TFS ...
- 开发团队在TFS中使用Git Repository (二)
使用Git作分支时,仅仅是对提交历史记录的一个引用,创建分支成本非常低,分支的切换快且简单.在分支管理方面,相对其他的版本管理工具,Git可谓是一骑绝尘. 开发过程中,我们可以针对任何的大小功能进行分 ...
- DTCMS中文章增加tags标签和关键词时中文,替换为英文状态,
DTCMS.Web\admin\article\article_edit.aspx 找到添加和修改的方法 model.tags = txtTags.Text.Trim()model.seo_keywo ...
- 代码管理_Git中获取两个标签之间的变更代码行数
操作步骤: 1.先进入git的服务器,定位到 repositories 目录 2.再定位到具体的项目目录(登录bitbucket查看项目属性可以看到项目的存放目录),如下图: 3.浏览项目的标签,命令 ...
- SVN中trunk,branches,tags的使用明细--项目代码的管理
SVN在项目开发过程中有两种模式: 第一种:Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局svn://proj/|+ ...
- 如何在 Visual Studio 中使用 Git 同步代码到 CodePlex
开源社区不管在国内还是国外都很火热,微软也曾因为没有开源而倍受指责,但是随着 .Net framework.ASP.Net MVC等框架的逐渐开源,也让大家看到了微软开源的步伐.CodePlex 则是 ...
- [转]如何在 Visual Studio 中使用 Git 同步代码到 CodePlex
本文转自:http://www.cnblogs.com/stg609/p/3673782.html 开源社区不管在国内还是国外都很火热,微软也曾因为没有开源而倍受指责,但是随着 .Net framew ...
随机推荐
- python的协程和异步io【select|poll|epoll】
协程又叫做微线程,协程是一种用户态的轻量级的线程,操作系统根本就不知道协程的存在,完全由用户来控制,协程拥有自己的的寄存器的上下文和栈,协程调度切换时,将寄存器上下文和栈保存到其他地方,在切换回来后, ...
- JAVA知识积累 JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】
什么是JSP JSP全名为Java Server Pages,java服务器页面.JSP是一种基于文本的程序,其特点就是HTML和Java代码共同存在! 为什么需要JSP JSP是为了简化Servle ...
- 白盒静态自动化测试工具:FindBugs使用指南
目 录 1 FINDBUGS介绍 2 在ECLIPSE中安装FINDBUGS插件 3 在ECLIPSE中使用FINDBUGS操作步骤 3.1 ...
- [Selenium]Eclipse hangs at 57% in debug mode with TestNG tests
案例1: I am very thankful to saish and cbeust for the solution. I went through the similar issue with ...
- js技巧汇总
1.window.open()打开一个子页面,在子页面关闭时刷新父页面 子页面关闭事件代码:window.opener.location.href=window.opener.location.hre ...
- Tomcat连接池配置
今日做了个小网站,数据量不大,但当发布到虚拟主机上之后,接连不断的遇到各种问题. 被折磨了数日后,在网上查了大量的相关资料,现总结如下. 一.项目在上传到远程服务器的过程中,有可能丢失文件,或文件内容 ...
- 2018.10.20 NOIP模拟 面包(数学期望)
传送门 把方差的式子拆开. 方差=平方的期望-期望的平方. 显然只用维护点对的个数和总方案数就行了. 利用分步的思想来统计. 要统计覆盖一个矩形(x1,y1,x2,y2)(x1,y1,x2,y2)(x ...
- 2018.09.09 poj2949Word Rings(01分数规划+spfa判环)
传送门 这题要先巧妙的转化一下. 对于每个字符串,我们把头尾的两个小字符串对应的点连边,边权是这个字符串的长度. 这样最多会出现26*26个点. 这个时候就只用求出边权和跟边数的最大比值了. 这个显然 ...
- Mac pro 安装IntelliJ IDEA 2017版
1.官网下载这个版本https://www.jetbrains.com 2.点击下载即可 3.下载好后放入本地 4.启动mac终端进行破解 输入命令:sudo vim /private/etc/hos ...
- webuploader 文件上传总结
$(function() { /** * 初始化Web Uploader */ var uploader = WebUploader.create({ swf : '../mobile/Uploade ...
