Как перечислить все теги, которые содержат коммит?

227

Этот вопрос похож на Как перечислить все теги, указывающие на определенный коммит в git , но с одним отличием: я хочу искать все теги, которые содержат определенный коммит в дереве каждого тега, а не файлы, отмеченные в теге сам (в этом случае, только изменение Makefile было помечено).

АТХ
источник
1
Вы не можете пометить конкретный файл - теги указывают только на коммиты. Возможно, вы захотите отредактировать свой вопрос с более подробной информацией о проблеме, которую вы действительно пытаетесь решить.
Марк Лонгэйр
Примечание: в Windows обязательно используйте git 2.0.x (2014), если вы хотите, git tag --containsчтобы он не падал. Смотрите мой ответ ниже
VonC

Ответы:

348
git tag --contains <commit>
amalloy
источник
2
Я попробовал это. Но если тег содержит только один файл, я считаю, что он ищет только этот файл. Это не будет искать дерево. Кроме того, репозиторий, на котором я его пробовал, настолько большой, что git был освобожден и получил SIGKILL.
atx
21
Теги не содержат файлов. Они просто маркеры для коммита. Учитывая это, я не думаю, что ваше возражение имеет смысл.
Амаллой
Он не должен показывать мне коммит из-за нехватки памяти в этом случае. Вы знаете, как я могу преодолеть это?
atx
5
Есть ли способ сделать это против удаленных тегов? Аналогично с филиалами:git branch -r --contains <commit>
Майк
23

Обратите внимание, что вам нужен git 2.0.x (3 квартал 2014 года), чтобы перечислить все теги для определенного коммита, если у вас большое репо

Смотрите коммит cbc60b6 от Jean-Jacques Lafay ( lanfeust69) :

git tag --contains: избежать переполнения стека

В больших репозиториях реализация рекурсии contains(commit, commit_list)может привести к переполнению стека. Замените рекурсию петлей, чтобы исправить это.

Эта проблема более очевидна в Windows, чем в Linux, где стек более ограничен по умолчанию.

Смотрите также эту тему в списке msysGit .

VonC
источник
9
Не каламбур предназначен? ;-)
MikeSchinkel
3
@MikeSchinkel Ну ... по крайней мере, не намеренно .
VonC
16
git tag --contains <sha1_hash> 

должно сработать

manojlds
источник