Время от времени меня спрашивают, на чем начинается какая-то ветвь на git или если определенная фиксация была создана на определенной ветке. Конечная точка ветки довольно ясна: там, где сидит ярлык ветки. Но с чего это началось? Тривиальный ответ был бы следующим: на том коммите, где мы создали эту ветвь. Но эта информация, насколько я знаю сейчас, и почему я задаю вопрос, потерянный после первого совершения.
Пока мы знаем коммит, в котором мы разветвляемся, мы можем нарисовать график, чтобы он дал понять:
A - B - C - - - - J [master]
\
D - E - F - G [branch-A]
\
H - - I [branch-B]
Я создал ветвь-B при фиксации E
, чтобы "начать". Я знаю это, потому что я это сделал. Но могут ли другие признать это так же? Мы могли бы нарисовать один и тот же график:
A - B - C - - - - J [master]
\
\ F - G [branch-A]
\ /
D - E
\
H - I [branch-B]
Итак, посмотрев на график, какая ветка начиналась с E
, а какая - на B
? Является ли commit D
членом обеих ветвей или мы можем четко определить, принадлежит ли это ветке-A или ветки-B?
Это звучит несколько философски, но на самом деле это не так. Наблюдатели иногда любят знать, когда была начата ветка (обычно это означает начало задачи) и к какой ветке относятся некоторые изменения (чтобы получить цель некоторых изменений - это было необходимо для работы), и я бы например, если git предлагает информацию (инструменты, команды) или определения для правильного ответа на эти вопросы.