У моего репозитория git есть три ветки, devel, stable и customers/acme_patches. Давно, stable был разветвлен от devel, и все исправления ошибок имеют место в stable. Время от времени stable снова объединяется в devel. customers/acme_patches - это ветвь с несколькими клиентскими патчами. Филиал не был объединен ни с одним из devel и stable.
Немного искусства ASCII, чтобы проиллюстрировать сценарий:
o---o---o customers/acme_patches?
/
o---o---1---o---o---o stable
/ \ \
o---o---o---2---o---o---o---o devel
\
o---o---o customers/acme_patches?
Теперь я задаюсь вопросом:
Какая ветвь была customers/acme_patches разветвлена от - devel или stable? Я знаю только, что в прошлом он был раздвоен одним из них, но я не знаю, что. Например. он мог бы зафиксировать 1 или 2 на приведенной выше диаграмме.
Я играл с git log --oneline --graph и gitk, но поскольку customers/acme_patches был разветвлен на несколько сотен комм. назад, трудно следовать за строками.
Может быть, быстрая команда (немного script тоже прекрасна), которая может каким-то образом выполнить коммиты в customers/acme_patches назад, чтобы найти первый коммит с двумя дочерними элементами (точка fork), а затем определяет, было сделано в stable или в devel?
В лучшем случае я мог бы просто выполнить что-то вроде (извините приглашение, я на Windows):
C:\src> git fork-origin customers/acme_patches
stable