Как мне найти следующий коммит в git? (ребенок / дети реф.) - PullRequest
206 голосов
/ 15 февраля 2010

ref^ относится к коммиту до ref, как насчет получения коммита после ref?

Например, если я git checkout 12345 как мне проверить следующий коммит?

Спасибо.

PS Да, git - это дерево структуры указателя узла DAG. Как мне найти коммит после этого?

Ответы [ 14 ]

2 голосов
/ 12 мая 2010

Если все дочерние коммиты находятся в некоторой ветке, вы можете использовать gitk --all commit^.., где "commit" - это нечто, идентифицирующее коммит. Например, если обозначение SHA-1 для коммита - c6661c5, введите gitk --all c6661c5^..

Возможно, вам потребуется ввести полный SHA-1 в ячейку gitk "SHA1 ID:". Вам понадобится полный SHA-1, который для этого примера можно получить через git rev-parse c6661c5

В качестве альтернативы, git rev-list --all --children | grep '^c6661c5883bb53d400ce160a5897610ecedbdc9d' создаст строку, содержащую все дочерние элементы этого коммита, предположительно независимо от того, задействована ли ветвь.

0 голосов
/ 07 апреля 2017

Существующие ответы предполагают, что у вас есть ветвь (или ссылка), содержащая коммит, который вы ищете.

В моем случае, коммит, который я искал, не был в git rev-list --all, поскольку ни одна ветвь не содержала его. В итоге я просмотрел gitk --reflog вручную.

Если вы не можете найти свой коммит даже в рефлоге, попробуйте git fsck --full, чтобы получить список висячих коммитов (т. Е. Не в любой ветке), или git fsck --lost-found, чтобы сделать ссылки и применять методы в других ответах.

0 голосов
/ 03 апреля 2015

Этот пост (http://www.jayway.com/2015/03/30/using-git-commits-to-drive-a-live-coding-session/#comment-282667) показывает аккуратный способ, если вы делаете это, если вы можете создать четко определенный тег в конце стека фиксации. По существу git config --global alias.next '!git checkout `git rev-list HEAD..demo-end | tail -1`' где "demo-end" - последний тег.

0 голосов
/ 15 февраля 2010

Каждый коммит хранит указатель на своего родителя (родителей, в случае слияния (стандартного) коммита).

Таким образом, нет способа указать на дочерний коммит (если он есть) от родителя.

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