Судя по комментариям, мне кажется, что я неправильно понял ваш вопрос относительно того, что определяет 92dd09b
.Я сохранил свой первоначальный ответ ниже, чтобы разговоры с комментариями не стали еще более запутанными.Но, исходя из моего текущего понимания, у вас действительно есть
... x
\
x -- x -- x -- A -- 92dd09b -- x -- M2 -- x <--(develop)
/
... x -- B <--(branch)
В этом случае то, что вы пробовали в первую очередь (checkout 92dd09b
, запустите git log), должно показать коммиты из обеих веток;Вы можете исключить коммиты из ветви "слияния", сказав
git log --first-parent
Или, в ответ на PhD, вы можете сказать
git show 92dd09b~
(среди прочего).
Ваши комментарии указывают на то, что это не привело вас к правильному коммиту, однако это говорит о том, что что-то неправильно наблюдается.
Итак, насколько я понимаю, у вас возникла ветвь разработки
x -- x -- x -- A <--(develop)
и у вас была другая ветвь
x -- x -- x -- A <--(develop)
... x -- 92dd09b <--(branch)
, и вы объединили 92dd09b
в develop
x -- x -- x -- A -- M1 <--(develop)
/
... x -- 92dd09b <--(branch)
, и теперь, возможно, произошла еще какая-то работа
... x
\
x -- x -- x -- A -- M1 -- x -- M2 -- x <--(develop)
/
... x -- 92dd09b <--(branch)
Итак, теперь вы хотите найти A
.
Как правило, коммиты облегчают поиск «назад во времени»;не так легко смотреть вперед.Если вы начинаете с 92dd09b
, вам нужно «смотреть вперед», чтобы перейти к M1
, а , а затем оглядываться на A
.
Так что это не так просто, как ваммог бы надеяться.Но это может быть сделано.Вы можете начать с
git log --merges --format=%p develop
Это даст вам списки родителей для каждого коммита слияния в develop
, по одному в каждой строке.Таким образом, вы можете отфильтровать это любым количеством способов.
git log --merges --format=%p develop |grep 92dd09b$ |cut -d" " -f1
должен напечатать сокращенный хеш «другого» родителя M1
, который должен быть A
.(Предполагая, что это не слияние осьминога, и если вы слили 92dd09b в develop
, а не наоборот.)