Как узнать, из какой общей ветки разветвилась моя функциональная ветка

Очень часто в нашем проекте заканчиваются эти несколько старые ветки, которые мы хотим воскресить, но мы не уверены, из какой общей ветки они были ответвлены.

Итак, чтобы попытаться поставить вопрос как можно более конкретно:

  1. Я могу определить небольшой набор "общих ветвей"
  2. У меня есть конкретная фича ветка F

Есть ли хороший инструмент (предпочтительно с графическим интерфейсом), который легко позволяет мне определить, из какой общей ветки F была ответвлена?


person DaBlick    schedule 28.11.2018    source источник
comment
Филиалы фактически не имеют родительских ветвей. Информация недоступна и не может быть вычислена в целом (хотя во многих конкретных случаях есть один очевидный кандидат). См. также Поиск родительской ветки ветки Git.   -  person torek    schedule 28.11.2018
comment
Что означает вырезать из в этом отношении? Точка разветвления?   -  person berkes    schedule 29.11.2018
comment
@torek Ветка, в которой я находился, когда создавала новую ветку.   -  person DaBlick    schedule 30.11.2018
comment
DaBlick: Я думаю, вы хотели обратиться к @berkes. Во всяком случае, Git формально нигде не сохраняет эту информацию. В журналах ссылок достаточно информации, чтобы собрать ее воедино на какое-то время, пока не истечет срок действия записей журналов ссылок, содержащих эту информацию, но даже это всего лишь предположение, потому что вы можете запустить git branch foo a123456, что делает новую ветвь foo точкой для фиксации a123456 независимо от вашей текущей фиксации. / ветка.   -  person torek    schedule 30.11.2018
comment
Не могли бы вы рассказать больше о вашем макете? Например. у общих веток есть общие родители, или они вроде полностью независимы? Если у них есть общий родитель (что обычно и бывает), сливаются ли они друг с другом в какой-то момент или в какой-то момент они просто ответвляются, чтобы никогда больше не встречаться?   -  person Mikhail    schedule 30.11.2018
comment
Вы знаете, как это сделать с помощью командной строки git, и просто спрашиваете об инструменте пользовательского интерфейса?   -  person Mikhail    schedule 30.11.2018
comment
@DaBlick Я в замешательстве. Вы имеете в виду, что хотите узнать отправную точку отделение? Потому что это то, что git log --graph --oneline будет использовать и показывать. По умолчанию это HEAD, что означает ветку, в которой вы сейчас находитесь. Однако то, что было проверено в момент ветвления, само по себе не регистрируется.   -  person berkes    schedule 30.11.2018
comment
@berkes Да, отправная точка. Я попробовал предложенную вами команду git log, и она дала мне огромный результат, и мне было непонятно, какое НАЗВАНИЕ ветки, с которой я начал новую ветку, было. Я понимаю, что это непростая проблема, потому что, конечно, я могу перейти от (скажем) релиза/3.0, но к релизу/3.0 могут быть добавлены новые коммиты. И... другие ветви могут быть вовлечены в историю предков по-разному. Я предполагаю, что это сводится к этому. Я хочу знать название ветки, которая имеет самого последнего общего предка.   -  person DaBlick    schedule 30.11.2018
comment
@mikhail У нас есть своего рода основная ветка, и у нас есть ветки release/XY. Ветки функций вырезаются либо из основной ветки, либо из ветки релиза/XY. Ветки релиза могут иметь общих родителей с master или с другой ветвью релиза. Итак, как я заметил в своем предыдущем ответе, вопрос на самом деле заключается в том, что является самой последней фиксацией, которая есть в любых других ветках. Затем из этого набора других ветвей удалите все ветви, производные от другой ветви в наборе.   -  person DaBlick    schedule 30.11.2018
comment
Я склонен пометить этот вопрос как дубликат stackoverflow.com/questions/4477765/ Пожалуйста, дайте мне знать, чем ваш вопрос отличается от этого вопроса.   -  person berkes    schedule 30.11.2018
comment
@berkes Это нормально.   -  person DaBlick    schedule 30.11.2018
comment
Возможный дубликат Как получить информацию о начале ветки?   -  person berkes    schedule 01.12.2018


Ответы (1)


git log --graph --oneline <branchname> должен показать вам историю <branchname> и его точки ветвления.

person berkes    schedule 28.11.2018
comment
Спасибо, но мне было не очень легко определить, какая ветвь была вырезана из вывода той. Я надеюсь, что есть что-то лучше. Мне легко определить фиксацию до моей первой фиксации. может быть, другой способ задать вопрос - как определить, какие ветки включают эту фиксацию в свою историю? На самом деле это немного ближе к тому, что я хочу: git for-each-ref --contains ‹SHA1› - person DaBlick; 28.11.2018