如何下载(检出)指定的 Git 标签
检出指定 tag:git fetch --tags 后 git checkout tags/<标签名>(进入游离 HEAD 状态);要在其上开发先 git switch -c <分支名>。只想下载代码可用 GitHub 的 Releases 页面或 git clone --depth 1 --branch <标签名>。
检出标签用 git checkout tags/<标签名>:这会进入"游离 HEAD"(detached HEAD)状态——你站在标签指向的提交上,可以查看、构建,但直接提交不会挂在任何分支上。要基于它改代码,先 git switch -c 新分支名 建分支。
检出标签
git fetch --tags # 确保拿到远程所有标签
git tag # 列出本地标签
git checkout tags/v1.0.0 # 检出 v1.0.0
只想要代码、不要历史
# 浅克隆指定 tag,只要一个提交
git clone --depth 1 --branch v1.0.0 https://github.com/org/repo.git
或者直接下载 GitHub 自动打包的源码:
curl -L https://github.com/org/repo/archive/refs/tags/v1.0.0.tar.gz | tar xz
游离 HEAD 下想保留改动
git switch -c fix-on-v1.0.0 # 立即建分支,提交就安全了
常见问题(FAQ)
Q:checkout 标签时报 "pathspec did not match"?
本地还没有这个标签。先 git fetch --tags;还不行就说明远程也没这个标签(可能只是 Release 标题,去 Releases 页核对真实 tag 名)。
Q:游离 HEAD 状态下忘了建分支就提交了,会丢吗?
短期内不会:切走前 git switch -c 分支名 即可固定;已经切走了用 git reflog 找到那个提交哈希再建分支。
Q:部署时按 tag 拉代码是什么姿势?
CI 里常见组合:git fetch --tags && git checkout tags/v1.0.0(或克隆时用 --branch v1.0.0 --depth 1)。按 tag 部署保证产物与发布点严格一致,回滚就是换旧 tag 重新部署。