Git Revisions
git revisions
(Git 修订版本)代表特定的版本或范围,revisions 可以高效的定位你想要的提交,git 命令很多参数都支持 revisions 。
revisions 的具体格式有一整套匹配规则:
1 | ---------------------------------------------------------------------- |
来自 StackOverflow 的 一份回答:What are commit-ish and tree-ish in Git? 。
<sha1>
object 对象名称。
示例:
dae86e1950b1277e545cee180551750029cfe735
dae86e
<describeOutput>
git describe
的输出。
示例:
v1.7.4.2-679-g3bee7fb
<refname>
引用名称。
示例:
master
heads/master
refs/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^0
HEAD^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:README
master:./README