Git revisions cheatsheet (original) (raw)
A list of revision specifications you can use with git log and many other Git commands. Summarized from gitrevisions(7) man page.
Example usages
| git log master...develop |
inspect differences in branches |
| git rebase -i HEAD~3 |
rebase last 3 commits |
| git reset --hard HEAD@{2} |
undo last operation that changed HEAD |
| git checkout v2^{} |
checkout the v2 tag (not v2 branch) |
The 3rd argument in each of these commands is a gitrevision. These gitrevisions can be passed to many Git commands.
Common git revisions
| Reference |
Description |
| git show dae68e1 |
sha1 |
| git show HEAD |
reference |
| git show v1.0.0 |
tag |
| git show master |
local branch |
| git show origin/master |
remote branch |
| git show master~2 |
2 commits back from master |
| git show master..fix |
reachable from fix but not master |
| git show master...fix |
reachable from fix and master, but not both |
These are just the common ones, there’s a lot more below! (These work in many other commands, not just git show.)
Reference
Commits
| git checkout dae68e1 |
sha1 |
References
| Example |
Description |
| git checkout HEAD |
reference |
| git checkout master |
branch |
| git checkout v1.0.0 |
tag |
| git checkout origin/master |
aka, refs/remotes/origin/master |
| git checkout heads/master |
aka, refs/heads/master |
Searching back
| Example |
Description |
| git checkout master@{yesterday} |
also 1 day ago, etc |
| git checkout master@{2} |
2nd prior value |
| git checkout master@{push} |
where master would push to |
| git checkout master^ |
parent commit |
| git checkout master^2 |
2nd parent, eg, what it merged |
| git checkout master~5 |
5 parents back |
| git checkout master^0 |
this commit; disambiguates from tags |
| git checkout v0.99.8^{tag} |
can be commit, tag, tree, object |
| git checkout v0.99.8^{} |
defaults to {tag} |
| git checkout ":/fix bug" |
searches commit messages |
Other
| HEAD:README |
… |
| 0:README |
(0 to 3) … |
Ranges
Ranges
| git log master |
reachable parents from master |
| git log ^master |
exclude reachable parents from master |
| git log master..fix |
reachable from fix but not master |
| git log master...fix |
reachable from fix and master, but not both |
| git log HEAD^@ |
parents of HEAD |
| git log HEAD^! |
HEAD, then excluding parents’s ancestors |
| git log HEAD^{:/fix} |
search previous _HEAD_s matching criteria |
Ranges illustration
A ─┬─ E ── F ── G master
│
└─ B ── C ── D fix
| git log master..fix |
BCD |
| git log master...fix |
BCD and EFG |
References