本文根据 Devhints / Git revisions 翻译。代码示例及版本范围沿用原文。原文标注更新日期:2017-10-11。
可与以下命令配合使用的修订版本规范列表: git log 以及许多其他 Git 命令。内容摘自 gitrevisions(7) 手册页 (man page)。
用法示例
git log master...develop | 查看分支间的差异 |
git rebase -i HEAD~3 | 变基 (rebase) 最近 3 次提交 |
git reset --hard HEAD@{2} | 撤销上一次修改 HEAD 的操作 |
git checkout v2^{} | 检出 (checkout) v2 标签 (而非 v2 分支) |
这些命令中的第三个参数是一个 gitrevision。这些“Git 修订版本”(gitrevisions)可以传递给许多 Git 命令。
常见的 Git 修订版本
| 参考资料 | 说明 |
|---|---|
git show dae68e1 | SHA-1 哈希值 |
git show HEAD | 引用 |
git show v1.0.0 | tag |
git show master | 本地分支 |
git show origin/master | 远程分支 |
git show master~2 | master 分支向前回溯 2 个提交 |
git show master..fix | 可从……到达 fix 但不包括 master |
git show master...fix | 可从……到达 fix 以及 master,但不能两者兼有 |
这些只是其中常见的几种,下面还有更多!(这些用法也适用于许多其他命令,不仅限于此) git show.)
参考资料
提交
git checkout dae68e1 | SHA-1 哈希值 |
参考资料
| 示例 | 说明 |
|---|---|
git checkout HEAD | 引用 |
git checkout master | 分支 |
git checkout v1.0.0 | tag |
git checkout origin/master | 又称, refs/remotes/origin/master |
git checkout heads/master | 又称, refs/heads/master |
向后搜索
| 示例 | 说明 |
|---|---|
git checkout master@{yesterday} | 以及 1 天前,等等 |
git checkout master@{2} | 前第二个值 |
git checkout master@{push} | 指向 master 将要推送到的位置 |
git checkout master^ | 父提交 |
git checkout master^2 | 第二个父提交,例如:合并来源 |
git checkout master~5 | 向后追溯 5 个父提交 |
git checkout master^0 | 当前提交;用于与标签(tag)区分 |
git checkout v0.99.8^{tag} | 可以是 提交, tag, 树对象, 对象 |
git checkout v0.99.8^{} | 默认为 {标签} |
git checkout ":/fix bug" | 搜索提交信息 |
其他
HEAD:README | … |
0:README | (0 到 3)…… |
范围
范围
git log master | 从 master 分支可达的父提交 |
git log ^master | 排除从 master 分支可达的父提交 |
git log master..fix | 可从……到达 fix 但不包括 master |
git log master...fix | 可从……到达 fix 以及 master,但不能两者兼有 |
git log HEAD^@ | ……的父提交 HEAD |
git log HEAD^! | HEAD,然后排除这些父提交的祖先 |
git log HEAD^{:/fix} | 搜索之前的 HEAD符合条件的项 |
范围示意图
A ─┬─ E ── F ── G master
│
└─ B ── C ── D fix
git log master..fix | BCD |
git log master...fix | BCD 和 EFG |
参考资料
- Git 工具 - 版本选择 (git-scm.com)
- gitrevisions(7) (kernel.org)