Git Revisions
git revisions (Git 修订版本)代表特定的版本或范围,revisions 可以高效的定位你想要的提交,git 命令很多参数都支持 revisions 。
revisions 的具体格式有一整套匹配规则:
1 | ---------------------------------------------------------------------- |
来自 StackOverflow 的 一份回答:What are commit-ish and tree-ish in Git? 。
<sha1>
object 对象名称。
示例:
dae86e1950b1277e545cee180551750029cfe735dae86e
<describeOutput>
git describe 的输出。
示例:
v1.7.4.2-679-g3bee7fb
<refname>
引用名称。
示例:
masterheads/masterrefs/heads/master
@
单独一个 @ 表示 HEAD ,及当前分支。
[<refname>]@{<date>}
设置引用名称,同时设置时间过滤条件。
示例:
master@{yesterday}HEAD@{5 minutes ago}refs/heads/master@{1979-02-26 18:30:00}
<refname>@{<n>}
设置引用名称,同时设置倒数第 n 个版本。 0 代表最新的版本。
示例:
HEAD@{0}master@{1}refs/heads/master@{10}
@{<n>}
跟 <refname>@{<n>} 一样,省略了 refname 表示 refname 默认为 HEAD 。
@{-<n>}
[<branchname>]@{upstream}
指定远程仓库分支名称。@{upstream} 可以简化成 @{u} 。
示例:
master@{upstream}@{u}
[<branchname>]@{push}
指定分支名称,指示该分支将会push到远程仓库中。
示例:
master@{push}@{push}
<rev>^[<n>]
在 revision 后面添加 ^ 符号,表示获取第 n 个父级对象( parent ),没有设置 n 时,表示第一个父级对象,^0 表示 commit 本身。
示例:
HEAD^v1.5.1^0HEAD^3
<rev>~[<n>]
<rev>^{<type>}
在 revision 后面添加 ^{<type>} 符号表示递归该引用直到找到对应类型(_<type>_)的 object 对象。
示例:
v0.99.8^{commit}dae86e1950b1277e545cee180551750029cfe735^{tree}
<rev>^{}
表示递归该引用直到找到类型不是 tag 的 object 对象。
示例:
v0.99.8^{}dae86e1950b1277e545cee180551750029cfe735^{}
<rev>^{/<text>}
匹配 <text>_,等效于 _:/<text> 。
示例:
HEAD^{/fix nasty bug}
:/<text>
正则表达式匹配字符串。
示例:
:/fix nasty bug:/^foo
<rev>:<path>
匹配文件/目录名称。
示例:
HEAD:READMEmaster:./README