Я попробую, пожалуйста, прокомментируйте, так как не совсем уверен, но я верю, что он выполняет свою работу.
Следующее будет работать, только если ветви все еще указывают на верхушкубудучи объединенным с мастером, что имеет место, если ветви были в одном репо:
o [master]
|
o merged branch "great-feature" into master
|\
| o A [great-feature]
| |
o | B
| |
Если это не так (например, если вы вытащили из другого репо), вы все равно можете воссоздать их вручную.
Сначала получите ветви, где ваш коммит:
$ git branch -a --contains=<sha-of-B>
*master
great-feature
, затем для каждой ветви получите количество коммитов, которые отделяют их голову от коммита: это число строк, которые выводятсяgit log для указанного диапазона:
$ git log --pretty=oneline <sha-of-B>..great-feature | wc -l
1
$ git log --pretty=oneline <sha-of-B>..master | wc -l
4
Так что B ближе всего к great-feature, что означает, что он был создан в нем.
Это можно сделать в виде хорошего сценария, не стесняйтесьдобавить его к ответу (я не очень хорош в этом)