Відповіді:
Простий git log <hash>
заклик до злиття показує скорочені хеши своїх батьків:
$ git log -1 395f65d
commit 395f65d438b13fb1fded88a330dc06c3b0951046
Merge: 9901923 d28790d
...
git
виводить батьків відповідно до їх кількості: перший (крайній лівий) хеш - для першого батька тощо.
Якщо все, що вам потрібно, це лише хеші, два рівноцінні варіанти:
$ git log --pretty=%P -n 1 <commit>
$ git show -s --pretty=%P <commit>
git rev-list
може також показати хеші батьків, хоча спочатку буде перераховано хеш для зобов'язання:
$ git rev-list --parents -n 1 <commit>
Якщо ви хочете , щоб досліджувати батьків, ви можете звернутися до них безпосередньо каратах , як <commit>^1
і <commit>^2
, наприклад:
git show <commit>^1
Це справді узагальнює; для злиття восьминога ви можете звернутися до n- го батька як <commit>^n
. Ви можете звернутися до всіх батьків <commit>^@
, хоча це не спрацьовує, коли потрібна одна фіксація. Додаткові суфікси можуть з’являтися після n- го батьківського синтаксису (наприклад <commit>^2^
, <commit>^2^@
), тоді як вони не можуть бути після ^@
( <commit>^@^
недійсні). Більше про цей синтаксис читайте на rev-parse
сторінці man.
git log
і git show
виводити дуже різні речі, коли є лише один з батьків. Віддайте перевагу, git log
якщо хочете консистенції.
git (v2.17.1)
. Я не бачу Merge
файл у git log -1
виході.