2012-06-13 3 views
0

Когда я делаю git log filename или некоторый список коммитов, с которыми был связан файл, я хотел бы видеть все теги, которые были применены к репозиторию, где файл был точно версией, указанной в git log filename. Это возможно?Как я могу получить все теги, которые были применены к файлу в репозитории git?

ответ

1

Во-первых, выяснить фиксации хэш коммита вы заинтересованы в - в данном примере это 6502bcc16b3790cc22cb771d1da3e8f35b4009c0:

$ git log «filename» 
commit 6502bcc16b3790cc22cb771d1da3e8f35b4009c0 
Author: Mike Morearty <[email protected]> 
Date: Wed Jun 13 16:04:56 2012 

    added «filename» 

Затем используйте git tag --contains попросить всех тегов, которые содержат, обязывающих:

$ git tag --contains 6502bcc16b3790cc22cb771d1da3e8f35b4009c0 
tag1 
tag2 

Если вы хотите, чтобы сделать все, что в одной строке, вот один из способов (возможно, есть более эффективные способы):

$ git tag --contains $(git log -1 --pretty=%H «filename») 
+0

Отлично. Я не знал о '--contains'. Если бы я хотел встроить теги в полный журнал файла, сделал бы я что-то вроде этого? 'git log filename | perl -ne 'print $ _; if (m/^ commit (. *) /) {print "tags:". \ git tag --contains $ 1 \ ';} '' –

+1

Да, что-то в этом роде. Другое, что вам может понравиться, это добавить '[log] decorate = true' к вашему' .gitconfig'. Он добавляет имена тегов и ветвей ко всем командам 'git log' (но не всем * тегам), только те, которые находятся в этом точном месте). –

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