I asked this question long ago but I still don't know what do ~ and ^ mean in this answer:
If you're talking about a remote branch, say, origin/master, you can use ~ and ^ to refer to ancestor commits relative to a branch the same way you can with local branches
What's the difference?