git 的标签(tag)

git打标签用途很广泛. 记录下相关命令

本地操作

#说明： 下文中的[]中的内容是选填的，可以无视方框内容，
# 也可以去掉方框选填其中内容

#查询

git tag

#增加

#0.
git tag [-f] your_tag_name [head(注)]
#1.
git tag [-f] your_tag_name [head] -m "your subject"
#2.
git tag [-f] your_tag_name [head] -a
...blablabla

# -f 是指强制更新
# -m 是指只加一个subject的标签
# -a 是指加一段文字的标签，打上-a 后，会跳出个文件让你写详细内容，
# 第一行是subject ，
# 第二行空，第三行开始写详述若需要的话

#删除

git tag -d tag_name

#重命名
#重命名一般是使用新建-删除组合

git tag [-f] new_tag_name old_tag_name
git tag -d old_tag_name
#另一种方法是,修改.git文件,修改.git/refs/tags/ 文件夹中文件名即可，比如
mv .git/refs/tags/new_tagname .git/refs/tags/old_tagname

#其他

git tag -h

(注)此处head为 git log 后显示的comment后一串字符的前N位(长度随意,但要保证你输入的字符没有二义性),同时,它还可以是另外一个tag的名字, 比如 git tag1 tag2 也是可以的

远程操作

#general push
git push origin --tags
#它就是上传本地的tag设置，服务器不会删除本地已经删除的东西
#delete
git push origin :refs/tags/tag_to_delete
#它是 git push origin refs/tags/tag_local:refs/tags/tag_remote 的变体

远程操作删除标签应该有更简单的手法的 — 若哪位知道，求帮助能不能强制(和前文中的-f一样),直接把本地的tag配置刷到服务器上么?