Прошу прокомментировать, так как не совсем уверен, но я считаю, что это делает эту работу.
Ниже будет работать только тогда, когда ветви еще указывают на кончике, прежде чем они объединены в мастера, который имеет место в случае, если ветви были на том же репо:
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 --pretty=oneline <sha-of-B>..great-feature | wc -l
1
$ git log --pretty=oneline <sha-of-B>..master | wc -l
4
Таким образом, B находится ближе всего к отличной функции, что означает, что он был создан в нем.
Это может быть сделано в хороший сценарий, не стесняйтесь, чтобы добавить его к ответу (я не очень хорошо в этом)
Строго говоря, это невозможно, только если слияние выполняется быстро. Если все слияния выполняются с помощью '--no-ff', git сохраняет историю ветвей. Просто сделайте 'git log -graph $ commit_id .. HEAD' – slebetman
Вообще говоря, в Git коммиты не относятся к ветвям, ветви находятся на фиксации. –