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