Как определить, для какой ветви был зафиксирован коммит github? - PullRequest
20 голосов
/ 20 февраля 2012

На github, когда я просматриваю коммит, он показывает мне сообщение о коммите и изменения, а также любые комментарии внизу. Однако, это не говорит мне, в какую ветку был зафиксирован коммит. Даже если я «просматриваю код», он просматривает код для определенного «дерева» (предположительно, состояния кода, когда была сделана фиксация), а не для конкретной ветви.

Я знаю, что коммиты в git неразрывно связаны с веткой, но, конечно, они всегда всегда будут вначале фиксироваться в конкретной ветке? Разве коммит не помечен этой веткой, и могу ли я посмотреть, какая это была ветка?

Ответы [ 6 ]

11 голосов
/ 02 октября 2012

ОК, по сути, ответ на этот вопрос таков: однозначного ответа нет. На самом деле Mercurial отмечает теги с именем ветки, в которую они были зарегистрированы, но git просто не делает этого; по-видимому, не важно, как называлось отделение. Это было дизайнерское решение, и не похоже, что оно изменится.

7 голосов
/ 27 марта 2013

Если вам известен номер коммита, вы можете просто сделать это

git branch --contains <commit>

Это должно дать вам название ветви, в которой был сделан коммит.ОБНОВЛЕНИЕ: В частности, на GitHub вы можете видеть ветку, частью которой является данный коммит.Подробности в блоге "Метки веток и тегов для страниц фиксации":

Если фиксация не относится к ветке по умолчанию, индикатор покажет ветки, содержащие фиксацию.Если фиксация является частью незаполненного запроса извлечения, будет показана ссылка.

enter image description here

4 голосов
/ 20 февраля 2012

С git help branch:

С параметром --contains показывает только ветви, содержащие именованный коммит (другими словами, ветви, коммиты которых являются советами, являются потомками именованного коммита).

При использовании --merged будут перечислены только ветви, объединенные в именованный коммит (т. Е. Ветви, коммиты с наконечниками которых достижимы из именованного коммита).

С --no-merged только ветви необъединены в названный коммит, будут перечислены.Если аргумент отсутствует, по умолчанию используется HEAD (т. Е. Конец текущей ветви).

3 голосов
/ 20 февраля 2012

Если это довольно недавний коммит, вы можете перейти к сетевому графику (например, https://github.com/BenHocking/ShortCircuitGA/network) и навести курсор на каждый узел ветви, пока не найдете коммит, который вы ищете. Это неэффективно, ноэто единственный способ, которым я знаю, как сделать это напрямую из GitHub. (Если у вас есть SourceTree, GitX или другие визуальные клиенты Git, могут быть и другие альтернативы, а также альтернативы командной строки.)

1 голос
/ 18 октября 2012

Начните отправлять запрос на получение фиксации.Вы увидите исходную ветку по умолчанию на стороне "from".

0 голосов
/ 13 февраля 2013

Этот ответ не поможет при предыдущих регистрациях, но я использую следующий скрипт ловушки commit-msg, чтобы добавить текущую ветвь к каждому сообщению фиксации.

#!/bin/sh
#
export BRANCH=`git status | head -1 | cut -c13-`
echo -n "($BRANCH) - " > .git/tmp-msg
cat $1 >> .git/tmp-msg
mv .git/tmp-msg $1

exit 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...