Как заставить родителей слияния совершить в git? - PullRequest
121 голосов
/ 30 января 2012

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

Ответы [ 2 ]

152 голосов
/ 30 января 2012

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

29 голосов
/ 09 апреля 2013

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

git show --pretty=raw 3706454
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...