2010-10-22 2 views
32

Притворись, что я разветвлен от моей ветви мастера до ветки темы, а затем сделал несколько коммитов на моей ветке темы. Есть ли команда, которая сообщает мне хеш фиксации на главной ветке, из которой возникла моя ветка темы?git, как найти фиксацию хеш, где ветвь возникла из

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

Я googled и SO'd вокруг и не могу приземлиться на ответ. Благодаря!

+0

http://stackoverflow.com/questions/2706797/git-finding-what-branch-a-commit-came-from может быть началом, даже если это не * точно * ваш вопрос. – VonC

+0

@ VonC спасибо за ссылку, не совсем то, что я хочу, но это хорошее начало – brycemcd

ответ

32

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

+23

@Bryce: обратите внимание, что если вы выполните некоторые промежуточные слияния, это даст вам самый последний общий предок, не обязательно первый разветвитель. – Cascabel

+0

Это больше не работает. Я просто получаю информацию об использовании: 'использование: git merge-base [-a | -all] ...'. Я предполагаю, что добавление 'HEAD' к указанной команде даст правильный ответ. –

+0

Есть ли опция для короткого выхода? git merge-base mast my_branch | git rev-parse --short HEAD –

54

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

bdbf21b087de5aa2e78a7d793e035d8bd9ec9629 [email protected]{0}: branch: Created from master 

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

+0

Это должен быть принятый ответ. –

Смежные вопросы