Существует фундаментальная проблема с вашим вопросом: что такое «создание ветвей»? «Ветвь» - это просто указатель на фиксацию, которая сама имеет ссылку на родительский фиксатор, который имеет ссылку на родительский фиксатор и т. Д. Назад во времени.
Если я рисую свою историю GIT так:
a -> b -> c -> d (master)
\
-> x -> y (devbranch)
Тогда вы могли бы сказать, что ответ очевиден. Но дело в том, что история также может быть составлена так:
a -> b -> x -> y (devbranch)
\
-> c -> d
Это то же самое. Нет конкретного «создания» ветки; это всего лишь метка, наложенная на кончик цепочки коммитов.
Вы мог быть в состоянии получить ответ, который вы ищете с помощью команды merge-base
, что-то вроде:
git checkout devbranch
git merge-base master HEAD
Это будет найти «лучший общий предок (ов) между двумя фиксациями использовать в трехстороннем слиянии ", что в простых случаях, вероятно, будет точкой, в которой две ветви расходятся.
Git не записывает создание ветки, в общем. В некоторых конкретных случаях вы можете найти идентификатор фиксации в рефлоге. Помните, что касается Git, ветви по существу не имеют значения: только * совершает * действительно имеет значение. Если вы хотите, чтобы система вечно вела ветви, вы не хотите Git. Если у вас все в порядке, «только фиксирует вопрос», записывайте специальные коммиты, используя теги. – torek
@torek Я предполагаю, что он означает ближайшую точку пересечения с какой-то другой ветвью. (если это так, [см. здесь] (http://stackoverflow.com/questions/1549146/find-common-ancestor-of-two-branches)) –
git log master..branch --oneline | tail -1, Прочтите этот http://stackoverflow.com/a/32870852/1270865 – cafebabe1991