Определение тега, к которому принадлежит ветка в git

Сначала я сделал репо-синхронизацию с манифестом для ветки myBranch. Затем я получаю теги из

git tag -l

Теперь я хочу знать, используя git, что каждый тег, полученный в результате git tag -l, был фактически создан в какой ветке. Обратите внимание: мне нужен не myBranch в качестве вывода, а имя удаленной ветки, в которой был создан тег.


person iDev    schedule 10.07.2012    source источник


Ответы (3)


Не говоря уже о том, что ветки можно переименовывать или удалять в любое время (без потери каких-либо коммитов, на которые все еще можно ссылаться в пути другой ветки), лучшее, что вы можете сделать, это:

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

См. "Показать исходную ветвь для фиксации" в сочетании с " Git - как определить, на какой коммит указывает тег ".
(То есть комбинация git rev-parse <tag>~0 с git branch --contains <sha1>)

Это не имеет ничего общего с веткой, в которой был создан тег , а скорее с ветвью (ветвями), которые в настоящее время ссылаются на указанный тег.

person VonC    schedule 10.07.2012

Нет такой вещи. Теги указывают на коммиты, а ветки - на коммиты. Один коммит может указывать (или быть родительским) на десятки различных веток; Невозможно сузить одну конкретную ветку до "владельца этого тега". Ветвь могла быть удалена из восходящего потока до того, как вы ее загрузили, и останется только фиксация, как еще один пример того, почему это не может работать.

person amalloy    schedule 10.07.2012
comment
A single commit can be pointed at (or be a parent of) dozens of different branches хороший момент. - person Joe.wang; 02.01.2014

Попробуй это:

branch=$(git for-each-ref | grep ${commit_num} | grep origin | sed "s/.*\///")
person ttfreeman    schedule 04.11.2019