copist
@copist
Empower people to give

Как узнать, от какой ветки или комита была рождена ветка

У сервиса github есть возможность посмотреть «дерево» репозитория с именами всех веток и комитами, от которых ветки начали расти

Вот пример: github.com/twitter/twitter-text-conformance/network

Подскажите, можно ли какой-нибудь консольной командой git узнать бранч или комит, от которого начала расти текущая ветка?
  • Вопрос задан
  • 33495 просмотров
Решения вопроса 1
sergey-kuznetsov
@sergey-kuznetsov Куратор тега 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
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@BearUA
Это, пожалуй, самый большой просчет в архитектуре git, но в общем случае никак нельзя.
Ответ написан
afiskon
@afiskon
git log --graph
git merge-base your_branch master
Ответ написан
Комментировать
@sambusak
Мне удобно это делать в тулзе gitk.
1. Перейди в искомую ветку.
2. Найти свой первый комит, его Parent (joxi.ru/p279a76IovG8ar) и есть ветка от которой было ответвление.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы