When I specify an ancestor commit object in Git, I\'m confused between HEAD^ and HEAD~.
Both have a \"numbered\" version like HEAD^3<
TLDR
~ is what you want most of the time, it references past commits to the current branch
^ references parents (git-merge creates a 2nd parent or more)
A~ is always the same as A^
A~~ is always the same as A^^, and so on
A~2 is not the same as A^2 however,
because ~2 is shorthand for ~~
while ^2 is not shorthand for anything, it means the 2nd parent