R's Workshop

Git Commit-ish and Tree-ish

在查 git 指令的時候, 常常看到 <commit-ish><tree-ish> 這兩個名詞. 之前一直誤以為是指 git 的 committree object, 直到最近在 stackoverflow 看到了這一篇解釋才豁然開朗.

Commit-ish vs. Tree-ish

Commit-ish/Tree-ish

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

Tree-ish Examples
1. <rev>:<path> HEAD:README, :README, master:./README
2. :<n>:<path> :0:README, :README

Reference

Git