У меня есть ветка git, branch-1
, чей последний хэш коммита — 123456
. У меня также есть ветка git branch-2
, последняя фиксация которой 7890ab
и была сделана после 123456
. Обе эти ветви основаны на dev
.
Затем я объединяю branch-2
в dev
и втягиваю dev
в branch-1
. Запуск git log
в ветке-1 показывает последние 3 фиксации как:
Коммит слияния для втягивания dev
в branch-1
7890ab
123456
Есть ли команда, которую я могу запустить, чтобы получить последнюю фиксацию, сделанную в ветке branch-1
, то есть 123456
? Я пробовал запустить git log --no-merges --max-count=1
, который исключает фиксацию слияния, но извлекает 7890ab
, потому что это не «фиксация слияния», хотя она была получена из отдельной ветки.
Спасибо.
Подождите, если вы вытащите dev, пока вы находитесь в ветке-1, то последняя фиксация, сделанная в ветке-1, будет независимой от этой фиксации. Я думаю. Но вы можете использовать reflog, чтобы определить, где ветка находилась за n шагов до этого извлечения.
Почему вы хотите это сделать? Судя по истории Git (например, на свежем клоне), это невозможно. Хотя, как указывает @Guildenstern, машина, которая зафиксировала branch-1
, может иметь дополнительную информацию в reflogs.
Примечание: вы подчеркнули слово «сделано на ветке branch-1
», чтобы передать смысл вашего вопроса, который, я думаю, ясен, но обратите внимание, что в Git такого значения на самом деле не существует. Другими словами, вам интересно узнать, какой последний коммит был «сделан», когда branch-1
был проверен, но представьте себе сценарий, в котором вы были отсоединены, когда сделали этот коммит, а затем создали новую ветку, указывающую на этот новый коммит после факт. В этом случае в этой ветке никогда не было «сделано» ни одной фиксации, и никто, возможно, никогда не узнает об этом (или не позаботится), кроме вас.
Я смог решить эту проблему, используя флаг first-parent
на git log
. Из документации журнала git:
При поиске коммитов для включения следуйте только первому родительскому коммиту. увидев фиксацию слияния. Этот вариант может дать лучший обзор при просмотре эволюции той или иной тематической ветки, т.к. слияния в ветку темы, как правило, связаны только с адаптацией к обновленным вверх по течению время от времени, и эта опция позволяет вам игнорировать отдельные коммиты, внесенные в вашу историю таким слиянием.
Это привело к журналу, который просто показал исходный коммит 123456
и коммит слияния, но я смог отфильтровать коммит слияния по описанию (например, отфильтровать любой коммит с описанием «Объединить ветку x в цель»
Наконечник рефлога для этой ветки?