【Git原理与使用】-- 标签管理

目录

理解标签

创建标签

操作标签

删除

推送


理解标签

        标签 tag ,可以简单的理解为是对某次 commit 的⼀个标识,相当于起了⼀个别名。例如:在项目发布某个版本的时候,针对最后⼀次 commit 起⼀个 v1.0 这样的标签来标识里程碑的意义。

        用处:相较于难以记住的 commit id tag 很好的解决这个问题,因为 tag ⼀定要给⼀个让人容易记住,且有意义的名字。当我们需要回退到某个重要版本时,直接使用标签就能很快定位到。

创建标签

        在 Git 中打标签非常简单。首先,切换到需要打标签的分支上。然后,敲命令 git tag [name] 就可以打⼀个新标签。

[qcr@ecs-205826 remote---project]$ git branch
* master
[qcr@ecs-205826 remote---project]$ git tag v1.0
         可以使用命令 git tag 查看所有标签。
[qcr@ecs-205826 remote---project]$ git tag
v1.0

        查看打了一个标签,对本地仓库的影响。

[qcr@ecs-205826 remote---project]$ tree .git
.git
├── branches
├── COMMIT_EDITMSG
├── config
├── description
├── FETCH_HEAD
├── HEAD
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   └── update.sample
├── index
├── info
│   └── exclude
├── logs
│   ├── HEAD
│   └── refs
│       ├── heads
│       │   └── master
│       └── remotes
│           └── origin
│               ├── HEAD
│               └── master
├── objects
│   ├── 0a
│   │   └── 6993b3df50a1aa1387b23186ac854f4da3001b
│   ├── 1e
│   │   └── ff76c90b1a1a244cbf0e278356c07f627474d0
│   ├── 3f
│   │   └── e4a1338f210805470d475d588dc82eb1c7032e
│   ├── 67
│   │   └── 5cc77ad3a0457477baeceaf34b0fc2e7e17b63
│   ├── 7b
│   │   └── 5bbd989152e5bab6b5476f50133e16137d6b30
│   ├── 9f
│   │   └── e2d15fba3cb4f104082c6d95176d31aa007972
│   ├── c3
│   │   └── 14d4d60463feca795fcc83b2b314a12d408787
│   ├── cd
│   │   └── c8ff98d8f653ce79386cea1ee536ea2cea3405
│   ├── e5
│   │   └── 32e80eaa632350e2e78337f46c9ce1a7313c56
│   ├── e6
│   │   └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│   ├── info
│   └── pack
│       ├── pack-5f4447002c72da3e6aa794706042883b44990aab.idx
│       └── pack-5f4447002c72da3e6aa794706042883b44990aab.pack
├── ORIG_HEAD
├── packed-refs
└── refs
    ├── heads
    │   └── master
    ├── remotes
    │   └── origin
    │       ├── HEAD
    │       └── master
    └── tags
        └── v1.0

26 directories, 38 files

【Git原理与使用】-- 标签管理_第1张图片

        此处确确实实在我们的本地仓库的存了一个标签,并且通过对其内部的内容进行查看可以发现,是 commit id

[qcr@ecs-205826 remote---project]$ cat .git/refs/tags/v1.0 
e532e80eaa632350e2e78337f46c9ce1a7313c56

        通过 git log 查看,可以发现其是最新的 commit id

[qcr@ecs-205826 remote---project]$ git log --pretty=oneline
e532e80eaa632350e2e78337f46c9ce1a7313c56 创建.gitignore
0a6993b3df50a1aa1387b23186ac854f4da3001b update file.txt.
1eff76c90b1a1a244cbf0e278356c07f627474d0 创建file.txt
f5df974f5a426de32852efa01f95abf77dc142bd Initial commit

        默认标签是打在最新提交的 commit 上的。如果想在指定的 commit 上打标签,方法是找到历史提交的 commit id ,然后打上就可以了。

[qcr@ecs-205826 remote---project]$ git log --pretty=oneline --abbrev-commit
e532e80 创建.gitignore
0a6993b update file.txt.
1eff76c 创建file.txt
f5df974 Initial commit
[qcr@ecs-205826 remote---project]$ git tag v0.5 1eff76c
[qcr@ecs-205826 remote---project]$ git tag
v0.5
v1.0

Note:查看标签的顺序,不是按照 commit id 的时间来算的,而是根据英文单词排序的。

        可以用 git show [tagname] 查看标签信息。 

[qcr@ecs-205826 remote---project]$ git show v0.5
commit 1eff76c90b1a1a244cbf0e278356c07f627474d0
Author: chuanru <[email protected]>
Date:   Mon Jul 3 02:19:40 2023 +0800

    创建file.txt

diff --git a/file.txt b/file.txt
new file mode 100644
index 0000000..7b5bbd9
--- /dev/null
+++ b/file.txt
@@ -0,0 +1 @@
+hello Git

        Git 还提供可以创建带有说明的标签,用 -a 指定标签名, -m 指定说明文字,格式为:

git tag -a [name] -m "XXX" [commit_id]
        实际使用。
[qcr@ecs-205826 remote---project]$ git tag -a v0.1 -m "important tag:反正很重要" f5df974
[qcr@ecs-205826 remote---project]$ git tag
v0.1
v0.5
v1.0
[qcr@ecs-205826 remote---project]$ git show v0.1
tag v0.1
Tagger: chuanru <[email protected]>
Date:   Mon Jul 3 21:40:38 2023 +0800

important tag:反正很重要

commit f5df974f5a426de32852efa01f95abf77dc142bd
Author: 川入 <[email protected]>
Date:   Sun Jul 2 16:17:37 2023 +0000

    Initial commit

diff --git a/.gitee/ISSUE_TEMPLATE.zh-CN.md b/.gitee/ISSUE_TEMPLATE.zh-CN.md
new file mode 100644
index 0000000..f09d98d
--- /dev/null
+++ b/.gitee/ISSUE_TEMPLATE.zh-CN.md
@@ -0,0 +1,13 @@

操作标签

删除

        如果标签打错了,也可以删除。
[qcr@ecs-205826 remote---project]$ git tag
v0.1
v0.5
v1.0
[qcr@ecs-205826 remote---project]$ git tag -d v0.5
Deleted tag 'v0.5' (was 1eff76c)
[qcr@ecs-205826 remote---project]$ git tag
v0.1
v1.0

推送

       在远端仓库中也有标签的能力。

【Git原理与使用】-- 标签管理_第2张图片

        因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。如果要推送某个标签到远程,使用命令 git push origin 命令。

[qcr@ecs-205826 remote---project]$ git tag
v0.1
v1.0
[qcr@ecs-205826 remote---project]$ git push origin v0.1
Counting objects: 1, done.
Writing objects: 100% (1/1), 186 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To [email protected]:chuanru/remote---project.git
 * [new tag]         v0.1 -> v0.1

        如果我们本地有很多标签,也可以⼀次性的全部推送到远端。
[qcr@ecs-205826 remote---project]$ git push origin --tags
Total 0 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To [email protected]:chuanru/remote---project.git
 * [new tag]         v1.0 -> v1.0
        如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除 (不建议直接在远端删除,即使可以) 。然后从远程删除,删除命令也是 git push
[qcr@ecs-205826 remote---project]$ git tag
v0.1
v1.0
[qcr@ecs-205826 remote---project]$ git tag -d v0.1
Deleted tag 'v0.1' (was 88ace8f)
[qcr@ecs-205826 remote---project]$ git push origin :v0.1
remote: Powered by GITEE.COM [GNK-6.4]
To [email protected]:chuanru/remote---project.git
 - [deleted]         v0.1

你可能感兴趣的:(Git,git)