Як перелічити всі теги, які містять комітку?


227

Це запитання схоже на те, як перелічити всі теги, що вказують на певну фіксацію в git , але з однією різницею: я хочу шукати всі теги, які містять певну комісію в дереві кожного тегу, а не конкретно файли, позначені в тегу себе (у цьому випадку позначено лише зміну Makefile).


1
Не можна тегувати певний файл - теги вказують лише на коміти. Можливо, ви захочете відредагувати своє запитання, щоб дізнатися більше про проблему, яку ви насправді намагаєтеся вирішити.
Марк Лонгейр


Примітка: на Windows, переконайтеся , що використовувати мерзотник 2.0.x (2014 року) , якщо Ви хочете , git tag --containsщоб НЕ врізатися. Дивіться мою відповідь нижче
VonC

Відповіді:


348
git tag --contains <commit>

2
Я спробував це. Але якщо тег містить лише один файл, я вважаю, що він шукає лише цей файл. Це дерево не буде шукати. Крім того, сховище, на яке я спробував це, настільки великий git, виручений і отримав SIGKILL'ed.
atx

21
Теги не містять файлів. Вони просто маркери для вчинення. Враховуючи це, я не думаю, що ваше заперечення має сенс.
amalloy

Це не повинно виявляти мені прихильність через брак пам’яті в такому випадку. Чи знаєте ви, як я можу перебороти це?
atx

5
Чи можна це зробити проти віддалених тегів? Подібно до гілок:git branch -r --contains <commit>
Майк

23

Зауважте, що вам потрібен git 2.0.x (Q3 2014) для того, щоб перелічити всі теги для певної комісії, якщо у вас є великий репо

Див зробити cbc60b6 по Жан-Жак Lafay ( lanfeust69) :

git tag --contains: уникайте переповнення стека

У великих репостах реалізація рекурсії contains(commit, commit_list)може призвести до переповнення стека. Замініть рекурсію петлею, щоб її виправити.

Ця проблема є більш очевидною в Windows, ніж в Linux, де стек за замовчуванням обмежений.

Дивіться також цю тему у списку msysGit .


9
Жоден каламбур не призначений? ;-)
MikeSchinkel

3
@MikeSchinkel Ну ... принаймні, не навмисний .
VonC

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.