git, как найти хеш коммита, откуда произошла ветка - PullRequest
48 голосов
/ 22 октября 2010

Представьте, что я разветвился из своей основной ветки в ветку тем, а затем сделал несколько коммитов в своей ветке тем.Есть ли команда, которая сообщает мне хеш коммита в ветке master, из которой произошла моя ветка темы?

В идеале мне не нужно было бы знать, сколько коммитов я сделал (пытаясь избежать HEAD ^ 5).

Я гуглил и так ходил и, похоже, не нашел ответа.Спасибо!

Ответы [ 3 ]

64 голосов
/ 22 октября 2010

Вы можете использовать git reflog show --no-abbrev <branch name>.Он выведет все изменения, сделанные в ветке, включая ее создание, например (я создал ветку xxx из master ветки):

bdbf21b087de5aa2e78a7d793e035d8bd9ec9629 xxx@{0}: branch: Created from master

Обратите внимание, что это не очень надежно, поскольку записи reflog могутистекает (90 дней по умолчанию), и кажется, что нет 100% надежного способа сделать это.

45 голосов
/ 22 октября 2010

используйте git merge-base master your-branch, чтобы найти лучшего общего предка между двумя ветвями (обычно это точка ветвления).

1 голос
/ 30 октября 2018

Единственный надежный способ сделать это - пометить начало вашей ветви при ее создании. Принятый ответ не будет работать, если вы слили коммиты с веткой, из которой вы создали новую ветку. Иногда это делается, например, если вы создаете стабилизирующую ветку релиза и хотите объединить свои исправления, найденные во время тестирования релиза, с мастер-версией. Обычное дело. Если вы знаете, что никогда не будете сливать коммиты из вашей новой ветки обратно в исходную ветку, тогда принятый ответ будет работать.

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