2015-10-22 6 views
4

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

Для все ветки, это git branch --all --merged <commit>. За последнее время тег, это git describe.

Man page git-tag предлагает git tag -l --contains <commit> *, но эта команда не показывает ни одного из тегов, которые, как я знаю, достижимы.

+1

Возможный дубликат [Как перечислить все теги внутри определенной мерзавца ветви] (http://stackoverflow.com/questions/32166548/how-to-list-all-tags-within- a-defin-git-branch) – Joe

+2

'--contains' перечисляет все теги, для которых фиксация доступна из тега, а не наоборот. – Jian

+0

Я хотел бы увидеть ответ, который работает на окнах или, предпочтительно, на платформе независимый вариант. – Knitschi

ответ

4

использовать этот скрипт, чтобы напечатать все теги, которые в данной отрасли

git log --decorate=full --simplify-by-decoration --pretty=oneline HEAD | \ 
sed -r -e 's#^[^\(]*\(([^\)]*)\).*$#\1#' \ 
-e 's#,#\n#g' | \ 
grep 'tag:' | \ 
sed -r -e 's#[[:space:]]*tag:[[:space:]]*##' 

Сценарий просто один длинный ряд вскрыт, чтобы поместиться в почтовом окне.

Объяснение:
git log 

// Print out the full ref name 
--decorate=full 

// Select all the commits that are referred by some branch or tag 
// 
// Basically its the data you are looking for 
// 
--simplify-by-decoration 

// print each commit as single line 
--pretty=oneline 

// start from the current commit 
HEAD 

// The rest of the script are unix command to print the results in a nice 
// way, extracting the tag from the output line generated by the 
// --decorate=full flag. 
+0

Отлично, это работает! Я все еще удивляюсь, почему «git tag -l --contains» не делает то, что сказано ... – user3608247

+0

Прохладный. :-) рад помочь – CodeWizard

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