# 13. 给版本打标签
## 目的
> 学习如何使用名称给提交打标签以便将来参考。
让我们叫 hello 程序的当前版本为 version 1 (v1)。
### 标记 version 1
```
$ git tag v1
```
现在你可以引用程序的当前版本为 v1。
### 标记先前的版本
让我们标记当前版本之前的版本为 v1-beta。首先我们需要检出 先前的版本。代替查询哈希,我们将使用 `^` 来表示“v1 的父 提交”。
如果使用 `v1^` 表示法遇到问题,那么你也可以试试 `v1~1`, 这将引用相同的版本。该表示法意为“v1 的第一个祖先提交”。
```
$ git checkout v1^
$ cat hello.rb
```
```
$ git checkout v1^
Note: checking out 'v1^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b new_branch_name
HEAD is now at 582495a... Added a default value
$ cat hello.rb
name = ARGV.first || "World"
puts "Hello, #{name}!"
```
看,这是我们添加注释之前的默认值版本。让我们使它成为 v1-beta。
```
$ git tag v1-beta
```
### 按标签名检出
现在试试在两个标记版本之间切换。
```
$ git checkout v1
$ git checkout v1-beta
```
```
$ git checkout v1
Previous HEAD position was 582495a... Added a default value
HEAD is now at 1f7ec5e... Added a comment
$ git checkout v1-beta
Previous HEAD position was 1f7ec5e... Added a comment
HEAD is now at 582495a... Added a default value
```
### 使用 tag 命令查看标签
你可以使用 `git tag` 命令来看看可用的标签有什么。
```
$ git tag
```
```
$ git tag
v1
v1-beta
```
### 查看日志中的标签
你也可以检查日志中的标签。
```
$ git hist master --all
```
```
$ git hist master --all
* 1f7ec5e 2013-04-13 | Added a comment (v1, master) [Jim Weirich]
* 582495a 2013-04-13 | Added a default value (HEAD, v1-beta) [Jim Weirich]
* 323e28d 2013-04-13 | Using ARGV [Jim Weirich]
* 9416416 2013-04-13 | First Commit [Jim Weirich]
```
你可以在日志输出中看到与分支名称(master)一起列出了两 个标签(v1 和 v1-beta)。而且 HEAD 显示你当前检出的提交 (此刻是 v1-beta)。
- 关于
- 1. 设置
- 2. 再谈设置
- 3. 创建项目
- 4. 检查状态
- 5. 做更改
- 6. 暂存更改
- 7. 暂存与提交
- 8. 提交更改
- 9. 更改而非文件
- 10. 历史
- 11. 别名
- 12. 获得旧版本
- 13. 给版本打标签
- 14. 撤销本地更改
- 15. 撤销暂存的更改
- 16. 撤销提交的更改
- 17. 从分支移除提交
- 18. 移除 oops 标签
- 19. 修正提交
- 20. 移动文件
- 21. 再谈结构
- 22. Git 内幕:.git 目录
- 23. Git 内幕:直接处理 Git 对象
- 24. 创建分支
- 25. 导航分支
- 26. 在 master 中更改
- 27. 查看分叉的分支
- 28. 合并
- 29. 创建冲突
- 30. 解决冲突
- 31. 变基 VS 合并
- 32. 重置 greet 分支
- 33. 重置 master 分支
- 34. 变基
- 35. 合并回 master
- 36. 多个仓库
- 37. 克隆仓库
- 38. 回顾克隆的仓库
- 39. 何为 Origin?
- 40. 远程分支
- 41. 更改原始仓库
- 42. 取得更改
- 43. 合并拉下的更改
- 44. 拉下更改
- 45. 添加跟踪的分支
- 46. 裸仓库
- 47. 添加远程仓库
- 48. 推送更改
- 49. 拉下共享的更改
- 50. 托管你的 Git 仓库
- 51. 共享仓库
- 52. 高级/将来的主题