Cheat Sheet速查表
跳转到主要内容

Git 修订版本 速查表

本文根据 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 dae68e1SHA-1 哈希值
git show HEAD引用
git show v1.0.0tag
git show master本地分支
git show origin/master远程分支
git show master~2master 分支向前回溯 2 个提交
git show master..fix可从……到达 fix 但不包括 master
git show master...fix可从……到达 fix 以及 master,但不能两者兼有

这些只是其中常见的几种,下面还有更多!(这些用法也适用于许多其他命令,不仅限于此) git show.)

参考资料

提交

git checkout dae68e1SHA-1 哈希值

参考资料

示例说明
git checkout HEAD引用
git checkout master分支
git checkout v1.0.0tag
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..fixBCD
git log master...fixBCD 和 EFG

参考资料