Как узнать, от какой ветки или комита была рождена ветка
Это, пожалуй, самый большой просчет в архитектуре git, но в общем случае никак нельзя.
Вопрос «от какой ветки» бессмысленен в Git, потому что ветки создаются только от какого-то коммита.
И тут нет такого маразма, как в Mercurial, что каждый коммит намертво привязан к какой-то ветке.
Вот типичная ситуация:
A - B - C - - - - J     [master]
     \
      D - E - F - G     [branch-A]
           \
            H - - I     [branch-B]
А чтобы найти начало ветки, нужно определиться, какую другую ветку мы хотим считать родительской.
Тогда первый общий коммит находится легко, как мы видим на примере работы GitHub.

Например так 
diff -u <(git rev-list --first-parent child_branch) <(git rev-list --first-parent parent_branch) | sed -ne 's/^ //p' | head -1