git 显示带有最新标记的分支列表

5us2dqdw  于 2023-05-27  发布在  Git
关注(0)|答案(1)|浏览(106)

有没有办法列出分支(git branch)沿着它们拥有的最新标记(git describe)?
我想要的结果是

branch1 (based on V1.1)
* branch2 (based on V1.2)
  branch3 (based on V2)

这里版本号是标签。我想保留我在自定义--format中设置的颜色和格式,
现在,我的想法是这样的:

versions=$(git branch --format "%(refname:short)" | xargs git describe --abbrev=0)
git branch --format "$(HEAD) $(refname:short) (based on [[???]])

其中???将是versions的一些扩展,它将是第一行上的第一行,第二行上的第二行,...
这是好的做法吗?什么是好的方法来做到这一点?

sf6xfgos

sf6xfgos1#

在所有分支上运行一个循环,并在循环中为每个分支调用git describe --tags
在所有分支上运行循环:

git for-each-ref refs/heads/

仅打印短名称:

git for-each-ref --format='%(refname:short)' refs/heads/

创建一个shell脚本,为每个分支调用git describe

git for-each-ref --format='echo %(refname:short) Based on $(git describe --tags %(refname));' refs/heads/

最后评估脚本:

eval `git for-each-ref --format='echo %(refname:short) Based on $(git describe --tags --abbrev=0 %(refname));' --shell refs/heads/`

参见the docs示例。
另一种方法是在git for-each-ref外部运行循环:

git for-each-ref --format='%(refname:short)' refs/heads/ |
    while read ref; do
        echo "$ref" Based on `git describe --tags --abbrev=0 "$ref"`
    done

相关问题