Git revisions cheatsheet
source link: https://devhints.io/git-revisions
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
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
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
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
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 HEADs 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
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK