Простой 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
странице руководства .
git log
иgit show
выводить очень разные вещи, когда есть только один родитель. Предпочитайте,git log
если вам нужна последовательность.git (v2.17.1)
. Я не вижуMerge
файла наgit log -1
выходе.Ниже приведен самый простой способ просмотра родителей слияния.
источник
git cat-file -p 3706454
такая же, но даже короче :)git log --pretty=raw -1 3706454