1. tag是什么
如果用过svn,你一定对tag不陌生。通常版本上线前,我们会对相应的代码打一个tag,将其封存起来,就如同一个代码快照。
2. 常用操作
2.1 创建tag
git tag -a <tag名称> <commit hash> -m <备注信息>
例:
git tag v6.2.1 6b2d5ffc -m "皮肤盒子"
commit hash不写,则默认对最后一次commit打tag
比如:
git tag v6.2.2 -m "tag测试"
2.2 列出所有tag
git tag
例:
git tag
1.0
2.0
v6.2.1
v6.2.2
使用-l参数可以进行前缀模糊匹配
git tag -l v6*
v6.2.1
v6.2.2
2.3 查看单个tag详情
git show <tag名>
例:
git show v6.2.1
tag v6.2.1
Tagger: ball
Date: Fri Nov 15 14:37:05 2019 +0800
皮肤盒子
commit 6b2d5ffcf188314fb4a60373510b8bfcefdde67a
Author: ball
Date: Fri Jan 25 17:06:08 2019 +0800
bug fix
diff --git a/br.txt b/br.txt
deleted file mode 100644
index b23a6f5..0000000
--- a/br.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-add a line
-ad
diff --git a/br2.txt b/br2.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/br3.txt b/br3.txt
deleted file mode 100644
index e69de29..0000000
2.4 删除tag
git -d <tag名>
2.5 推送/获取tag
向仓库推送所有tag
git push origin --tags
向仓库推送指定tag
git push origin <tag名>
只要执行git pull就会获取所有tag
3. 常见问题
如何切换到相应的tag上,进行文件操作?
git checkout <tag名>
例:
git checkout v6.2.1
HEAD 目前位于 6b2d5ff... fix
此时执行git status可以看到如下结果
git status
头指针分离于 v6.2.1
说明我们目前不处于任何分支,而是位于tag中。
是否可以修改tag中的内容?
可以。切换到相应tag上,你就可以如同在一个分支上那样修改,提前其内容。
但是实践中不建议修改,那样就失去了tag的意义。
tag的本质是什么?
tag本质是git某次commit的快照,tag的名字方便你记住某次commit。换句话说,如果你能记住每个发布版本对应的commit hash,其实完全可以将某个commit id检出,以达到查看其当时代码情况的目的。但是这样做实在是太麻烦,所以,还是用tag吧。
网友评论