Git:查找所有标签,可从提交中访问

Posted

技术标签:

【中文标题】Git:查找所有标签,可从提交中访问【英文标题】:Git: find all tags, reachable from a commit 【发布时间】:2016-01-21 10:14:18 【问题描述】:

如何列出所有标签,可以从给定的提交访问?

对于所有分支,它是git branch --all --merged <commit>。 对于最近的标签,它是git describe

手册页 git-tag 建议 git tag -l --contains <commit> *,但此命令未显示任何我知道可以访问的标签。

【问题讨论】:

How to list all tags within a certain git branch的可能重复 --contains 列出了所有可以从标签提交的标签,反之亦然。 我希望看到适用于 Windows 的答案,或者最好是独立于平台的变体。 【参考方案1】:

手册页 git-tag 建议使用 git tag -l --contains *,但是这个命令没有显示任何我知道可以访问的标签。

git tag --contains 用于反向搜索。它显示包含给定提交的所有标签。 (这与git branch --contains 的行为相同。)

【讨论】:

【参考方案2】:

使用此脚本打印出给定分支中的所有标签

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.

【讨论】:

太好了,这行得通!我仍然想知道为什么git tag -l --contains 不按照它所说的去做...... 酷。 :-) 很高兴为您提供帮助

以上是关于Git:查找所有标签,可从提交中访问的主要内容,如果未能解决你的问题,请参考以下文章

如何在谷歌云构建中访问 git 标签?

Git系列11:详解标签(tag)的使用

使图像可从其他 ViewController 访问

意外从具有不同提交历史的远程仓库中提取后访问较旧的 Git 提交

从Heroku应用程序中访问当前git提交号

git tag标签