Проще говоря, для первого уровня происхождения (происхождение, наследование, происхождение и т. Д.) HEAD ^ и HEAD ~ оба указывают на один и тот же коммит, который (находится) на одного родителя выше HEAD (коммит).
Кроме того, ГОЛОВА ^ = ГОЛОВА ^ 1 = ГОЛОВА ~ = ГОЛОВА ~ 1. Но ГОЛОВА ^^! = ГОЛОВА ^ 2! = ГОЛОВА ~ 2. Еще ГОЛОВА ^^ = ГОЛОВА ~ 2. Читайте дальше.
Помимо первого уровня происхождения, все становится сложнее, особенно если с рабочей веткой / главной ветвью произошли слияния (из других ветвей). Существует также вопрос синтаксиса с кареткой, HEAD ^^ = HEAD ~ 2 (они эквивалентны), НО HEAD ^^! = HEAD ^ 2 (это совершенно разные вещи).
Каждый / символ каретки относится к первому родителю HEAD, поэтому символы, заключенные в строку, эквивалентны выражениям тильды, потому что они относятся к первым родителям первого родителя (первого родителя) и т. Д. И т. Д., Основываясь исключительно на количестве на связанных каретах или на числе после тильды (в любом случае они оба означают одно и то же), то есть остаются с первым родителем и идут вверх на x поколений.
HEAD ~ 2 (или HEAD ^^) относится к коммиту, который на два уровня выше / выше текущего коммита (HEAD) в иерархии, что означает коммит деда и дедушки HEAD.
HEAD ^ 2, с другой стороны, ссылается НЕ на коммит второго родителя первого родителя, а просто на коммит второго родителя. Это связано с тем, что символ каретки означает родителя коммита, а следующий за ним номер указывает, на какой / какой родительский коммит ссылается (первый родитель в случае, когда за кареткой не следует число [потому что это сокращение для номера). будучи 1, означая первого родителя]). В отличие от каретки, число, которое следует после, не подразумевает другого уровня иерархии вверх, а скорее означает, сколько уровней вбок, в иерархии, нужно найти правильного родителя (commit). В отличие от числа в выражении тильды, это только один родительский элемент в иерархии, независимо от числа (непосредственно), идущего за кареткой. Вместо восходящего, конечный номер каретки учитывается сбоку для родителей по всей иерархии [на уровне родителей вверх, что эквивалентно количеству последовательных карет].
Таким образом, HEAD ^ 3 равен третьему родительскому элементу коммита HEAD (НЕ пра-пра-прародителем, каковым будет HEAD ^^^ AND HEAD ~ 3 ...).