Получить родителей слиянием в git

Учитывая слияние, как я могу получить его родителей? Некоторые команды git принимают родителя как ревизию; другие (например, git revert), как родительское число. Id нравится знать, как получить родителей для обоих случаев. Я не хочу использовать команду графического журнала, так как часто требуется прокрутка длинного дерева, чтобы найти второго родителя.

Ответ 1

Также обратите внимание, что обычный выход журнала показывает сокращенные хэши родителей, нет необходимости прокручивать:

 commit 395f65d438b13fb1fded88a330dc06c3b0951046
 Merge: 9901923 d28790d
 ...

git всегда печатает их в порядке родительского номера: первый хеш для первого родителя и т.д.

Если вам просто нужны хэши, два эквивалентных варианта:

git log --pretty=%P -n 1 <commit>
git show --pretty=%P <commit>

rev-list также может показывать родительские хэши для фиксации. Сначала будет указан хэш для фиксации, а затем родители.

git rev-list --parents -n 1 <commit>

Если вы хотите изучить родителей, вы можете обращаться к ним напрямую с каратами как <commit>^1 и <commit>^2, например:

git show <commit>^1

Это обобщает; для слияния осьминогов вы можете ссылаться на родительский n th как <commit>^n. Вы можете обратиться ко всем родителям с помощью <commit>^@, хотя это не работает, когда требуется одно коммит. Дополнительные дополнительные суффиксы могут появиться после синтаксиса n th (например, <commit>^2^, <commit>^2^@), тогда как они не могут после ^@ (<commit>^@^ недействительны). Подробнее об этом синтаксисе читайте на странице rev-parse.

Также обратите внимание, что обычный выход журнала показывает сокращенные хэши родителей:

 commit 395f65d438b13fb1fded88a330dc06c3b0951046
 Merge: 9901923 d28790d
 ...

Ответ 2

Ниже приведен самый простой способ просмотра родителями слияния

git show --pretty=raw 3706454