Git系列笔记之五:标签管理

筅森魡賤 提交于 2019-11-29 17:45:57

当我们需要提交一个软件版本时,可以往这个版本上打一个标签,以后可以按照某个标签来取回某个版本的代码,实际上标签就是一个软件版本的快照。

标签实际上是一个指向某个commit的指针,跟分支很像,但分支可以移动,而标签却不能。

创建标签

首先,我们应该切换到需要打标签的分支上

git branch
* dev
  master
git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.

然后,我们可以使用git tag v1.0这样的命令来创建一个标签

git tag v1.0

使用git tag命令来查看所有标签

git tag

上面的操作是默认的,也就是当前最新的提交上,如果想要给历史版本打上标签,就必须找到历史提交的commit id

git log --pretty=oneline --abbrev-commit 
4b2bea2 merge fix88 branch's modifyed
601da8d 在fix88分支上修复了一个bug
3d3cc43 merge with no-ff
a75a84c modifyed on dev branch
d057d79 conflict fixed
08ae6f3 modifyed on master branch
cec715d modifyed and commit on fea branch
8d4576f test on bra branch
62a6606 delete test.txt
96d9332 add test.txt
469e0de 这是我第二次修改,向index.html里添加了一个p标签并写入内容
1fb9ecb 这是我第一次修改,向index.html里添加了一个p标签并写入内容
a1a356d 新建index.html文件,这是第一次提交到仓库

比如,我们想要在第二次修改的地方打上标签,那么它对应的commit id就是 469e0de,下面来敲入命令:

git tag v0.1 469e0de

我们再次使用git tag命令来查看标签列表

git tag
v0.1
v1.0

我们可以使用git show <tagname>命令来查看标签信息

git show v0.1
commit 469e0dee7484aecadc303dea96aca3b05fcab718
Author: kaindy7633 <kaindy7633@gmail.com>
Date:   Wed Mar 16 15:28:47 2016 +0800

    这是我第二次修改,向index.html里添加了一个p标签并写入内容

diff --git a/index.html b/index.html
index 00e3fba..de4f7cf 100644
--- a/index.html
+++ b/index.html
@@ -6,5 +6,6 @@
 
 <body>
   <p>这是我向这个HTML文件加入的第一个P标签。</p>  
+  <p>这是我向这个HTML文件加入的第二个p标签。</p>
 </body>
 </html>

我们还可以为标签打上一段说明,使用-a参数指定标签名,-m参数指定标签说明

git tag -a v0.2 -m "add for fea branch" cec715d

继续使用git show <tagname>查看

git show v0.2
tag v0.2
Tagger: kaindy7633 <kaindy7633@gmail.com>
Date:   Thu May 5 18:24:55 2016 +0800

add for fea branch

commit cec715de12320fe1169c083c722e572685750144
Author: kaindy7633 <kaindy7633@gmail.com>
Date:   Fri Mar 18 10:41:18 2016 +0800

    modifyed and commit on fea branch

diff --git a/index.html b/index.html
index bf6b036..b7720b4 100644
--- a/index.html
+++ b/index.html
@@ -8,5 +8,6 @@
   <p>这是我向这个HTML文件加入的第一个P标签。</p>  
   <p>这是我向这个HTML文件加入的第二个p标签。</p>
   <p>这条修改是在bra分支上进行的,添加了第三个p标签</p>
+  <p>这条修改是在fea分支上进行的,添加了第四个p标签</p>
 </body>
 </html>

操作标签

如果标签打错了,也是可以删除的,标签都是存储在本地的

git tag -d v0.1
Deleted tag 'v0.1' (was 469e0de)

如果想要把本地标签推送到远程,可以使用git push origin <tagname>命令

git push origin v1.0
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:kaindy7633/gitTest.git
 * [new tag]         v1.0 -> v1.0

或者,我们可以一次把所有未推送到远程的标签推送到远程,使用命令git push origin --tags

git push origin --tags
Counting objects: 1, done.
Writing objects: 100% (1/1), 161 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@github.com:kaindy7633/gitTest.git
 * [new tag]         v0.2 -> v0.2

如果标签已推送到远程,而又要删除,则会有点麻烦,先删除本地标签

git tag -d v0.2
Deleted tag 'v0.2' (was d6683cf)

然后从远程删除,命令也是使用push

git push origin :refs/tags/v0.2
Warning: Permanently added the RSA host key for IP address '192.30.252.120' to the list of known hosts.
To git@github.com:kaindy7633/gitTest.git
 - [deleted]         v0.2
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!