标签概念:
发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。
Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。
Git有commit,为什么还要引入tag?
“请把上周一的那个版本打包发布,commit号是6a5819e...”
“一串乱七八糟的数字不好找!”
如果换一个办法:
“请把上周一的那个版本打包发布,版本号是v1.2”
“好的,按照tag v1.2查找commit就行!”
所以,tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。
当我们提交了本次大版本的最后一次修改之后,就能为该次版本创建一个tag,作为以后追溯的版本代号
[root@VM-75-64 test]# git log --pretty=oneline --abbrev-commit
68b1e43 deploy test.txt
295b7e1 Merge branch 'dev'
d402e91 deploy test.txt
eec652d merge with --no-ff
762a637 dev deploy
5210a22 final version
c3ab705 master deploy
3e1511e branch deploy
53b47a3 master deploy
d131953 feature1 deploy
33da3e4 deploy readme
6db6abf conflict fixed
0b6936b lines add
1d98d5b add lines
3501a30 branch test
df4ceaf first commit
上面是本次版本的所有提交记录,并附加上对应的版本号;
此时,我们为以往的一次提交创建标签:
[root@VM-75-64 test]# cat test.txt
lalala
ni hao ya
another test
[root@VM-75-64 test]# git tag V0.1 5210a22 #为commitID为5210a22创建标签为V0.1
[root@VM-75-64 test]#
[root@VM-75-64 test]# git tag #此时查看tag看到就有两个标签了
V0.1
lala1
[root@VM-75-64 test]# git show lala1 #查看标签对应的详情
commit 68b1e437b8e49c5d0e27b9e9096d073b1b889dbb
Author: zhangjian <zhangjian@xnhd.com>
Date: Thu May 16 11:52:04 2019 +0800
deploy test.txt
diff --git a/test.txt b/test.txt
index b149136..f7ca655 100644
--- a/test.txt
+++ b/test.txt
@@ -1,2 +1,3 @@
lalala
ni hao ya
+another test
[root@VM-75-64 test]# git checkout -b test_tag #创建一个测试分支
Switched to a new branch 'test_tag'
[root@VM-75-64 test]# git branch
dev
master
* test_tag
[root@VM-75-64 test]# git show V0.1 #查看标签V0.1的详情
commit 5210a2233e0c97d8e55785659007e323bfccc222
Merge: c3ab705 3e1511e
Author: zhangjian <zhangjian@xnhd.com>
Date: Wed May 15 17:11:08 2019 +0800
final version
diff --cc readme.md
index dd0c02b,d94c94e..fe4f5b8
--- a/readme.md
+++ b/readme.md
@@@ -1,4 -1,4 +1,4 @@@
Git test
Create a new branch is quick
Create a new branch is quick and simple
- Master deploy
-Tokyo deploy
++Ok let us deploy it together
[root@VM-75-64 test]# git reset --hard 5210a2233e0c97d8e55785659007e323bfccc222 #拉取应对版本代码
HEAD is now at 5210a22 final version
由于标签详情上会有commitID,此时我们就能通过这个commitID去拉取到对应的版本代码。
[root@VM-75-64 test]# cat readme.md
Git test
Create a new branch is quick
Create a new branch is quick and simple
Ok let us deploy it together #验证代码版本
[root@VM-75-64 test]# git branch
dev
master
* test_tag #此时我们就能在测试分支的对应代码上继续开发了
以上,共勉!