2016-12-02 6 views
1

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

Я ищу что-то эквивалентное git branch -r --contains <commit>, но только для удаленных тегов.

ответ

1

Я не нашел ни одной команды, которая позволяет получить этот результат, но этот процесс позволяет решить проблему. Считайте, что ref_sha - это хэш коммита, для которого вы хотите найти удаленные теги, ссылающиеся на него, или один из его потомков.

Тэги, имеющиеся на пульте дистанционного управления, могут быть указаны следующей командой.

git ls-remote --tags 

Каждая строка вывода будет представлять собой тег. Строка начинается с хэша заостренного объекта, за которым следует путь тега. Если тег указывает на объект аннотированного тега, добавляется вторая строка. За тегом будет следовать^{}, а хеш - это объект, полученный рекурсивным разыменованием хэша предыдущей строки.

Теперь нам нужно извлечь, потому что нам нужно будет выполнить проверку предков.

git fetch 

Теперь для каждого тега, указанного на первом этапе, нам необходимо выполнить проверку предка с помощью следующей команды. Пусть rem_sha - это хэш, обозначенный тегом. Если тег указал на объект тега, вы можете использовать этот хэш или хеш-объект с рекурсивно разыменованным объектом. Если вы предоставите хеш объекта аннотированного тега для команды, git будет рекурсивно разыменовывать тег автоматически.

git merge-base --is-ancestor <ref_sha> <rem_sha> 

Когда это возвращает 0, это означает, что rem_sha является ref_sha или один из его потомков (эквивалент: ref_sha является rem_sha или предок).

Примечание: мы не могли просто проверить локальные теги после извлечения, поскольку могут быть локальные теги, которые еще не были нажаты.

0

AFAIK нет такой вещи, как «удаленный» тег. То есть вы не можете различать тег, который у вас есть только локально, и тег, который также существует или существует только на удаленном компьютере.

Смежные вопросы