一. 推送标签流程
1.1 切换分支:git checkout main
- 含义:将当前工作目录切换到main分支。
- 用途:在创建标签之前,需要位于正确的分支上(可以选择main分支,也可以选择自己创建的其他分支)。通常,标签是基于特定分支的某个提交创建的。例如:如果当前不在main分支上,这个命令会切换到main,以便后续操作在正确的上下文进行。
- 注意:如果已经位于main分支,此命令不会产生任何效果。
1.2 创建标签:git tag -a v1.0.0 -m "Release version 1.0.0"
- 含义:`-a` 会创建一个带注解的标签,标签名为v1.0.0,`-m` 会并附带一条描述信息 "Release version 1.0.0"。
- 用途:标签用于标记代码库中的关键点,例如一个正式的发布版本。带注解的标签(通过`-a`参数指定)会记录额外信息,比如创建者、创建时间和描述消息,比轻量标签(不带-a)更适合版本管理。
- 细节:`-m`参数后面跟的是标签的描述信息,类似于提交时的消息,用于说明这个标签的意义。
- 注意:查询中列出了两次相同的创建标签命令,实际上只需执行一次即可,重复执行会因标签已存在而报错。
1.3 推送标签:git push origin v1.0.0
- 含义:将本地创建的标签v1.0.0推送到远程仓库origin。
- 用途:标签默认只存在于本地仓库,通过此命令将其上传到远程仓库,使其他协作者也能访问和使用这个标签。
- 细节:`origin`是远程仓库的默认名称,`v1.0.0`是要推送的具体标签名。
- 注意:查询中重复列出了此命令,但只需执行一次即可。
1.4 推送分支更改:git push origin main
- 含义:将本地main分支的最新提交推送到远程仓库origin的main分支。
- 用途:如果在创建标签之前,main分支上有未推送的提交,这个命令会确保远程仓库与本地保持同步。标签通常是基于某个提交的,如果相关提交未推送,远程仓库的标签可能指向不完整的代码状态。
- 注意:如果本地和远程的main分支已经同步,此步骤可以跳过。
二. 获取标签流程
2.1 拉取最新数据:git pull origin main
- 含义:从远程仓库origin的main分支拉取最新提交,并将其合并到本地的main分支。
- 用途:确保本地仓库与远程仓库的代码保持一致,获取已推送的最新更改。
- 细节:`git pull`是`git fetch`(获取远程数据)和`git merge`(合并到本地分支)的组合操作。
- 注意:查询中重复列出了此命令,但只需执行一次。
2.2 确保标签同步:git fetch --tags
- 含义:从远程仓库获取所有标签,并同步到本地。
- 用途:git pull只会拉取分支的提交,不会自动同步标签。此命令确保本地仓库包含远程仓库中的所有标签,例如一中所创建的v1.0.0。
- 细节:--tags参数告诉git fetch专门获取标签数据。
2.3 展示所有标签:git tag
- 含义:列出本地仓库中的所有标签。
- 用途:验证标签是否已成功同步到本地,例如检查v1.0.0是否出现在列表中。
- 细节:此命令只显示标签名称,不包含注解详情。如果想查看详细信息,可以使用git show v1.0.0。
2.4 (重点)切换到标签版本:git checkout v1.0.0
- 含义:将工作目录切换到标签v1.0.0所指向的提交。
- 用途:允许用户查看或操作特定版本的代码,例如检查发布版本v1.0.0的状态。
- 注意:执行此命令后,Git 会进入“分离头指针”(detached HEAD)状态,因为你不再位于某个分支的最新提交上。这种状态适合查看历史版本,但不建议在此进行新的开发。如果需要基于此版本开发,建议创建一个新分支,例如git checkout -b new-branch v1.0.0。
三. 删除标签流程
3.1 删除本地标签:git tag -d v1.1
- 说明:-d表示删除(delete),后面跟上标签名v1.1。
- 结果:执行后,本地仓库中的v1.1标签将被移除。
3.2 删除远程标签:git push origin :refs/tags/v1.1
如果v1.1标签已经被推送到远程仓库(如 GitHub),你需要删除远程仓库中的标签
- 说明:这个命令将一个空引用推送到远程仓库的refs/tags/v1.1,从而删除远程标签。
- 结果:远程仓库中的v1.1标签将被删除。
- 适用范围:此命令适用于大多数 Git 远程服务(如 GitHub、GitLab 等)。
3.3 确认删除:git tag(检查本地)git ls -remote --tags origin(检查远程)
删除后需要确定是否在本地和远端都已删除成功可以使用上述两条指令进行检查。
3.4 在其他电脑上同步:git tag -d v1.1(删除本地)git fetch --tags(删除远程)
如果在其他电脑已经拉取了该标签,则需要进行手动更新。
注意:即使同步后,本地已有的v1.1标签不会自动删除,需要手动执行删除。