获取两个最新的 git 标签(以及它们之间的日志)

问题描述 投票:0回答:2

我正在寻找一个 git 命令,它可以显示当前分支中

两个最新标签
之间的git log

即如果最近的两个标签是

build_341
build_342
,那么我希望最终得到
git log build_341..build_342

的输出

我知道我可以使用

git describe --abbrev=0
获取最新的标签,但我不知道如何显示第二个最新的标签。

git tags git-log git-tag
2个回答
1
投票

嗯,可以使用以下方法获取第二个最新标签:

git describe --abbrev=0 $(git describe --abbrev=0)^

因此我可以使用以下方法获取两个最新标签之间的日志:

git log $(git describe --abbrev=0 $(git describe --abbrev=0)^)..$(git describe --abbrev=0)

不太漂亮,但它似乎可以工作(只要你的 shell 支持

$()
命令替换)。欢迎其他答案。


0
投票

如果您遇到 HEAD 是合并提交的情况,我发现此解决方案可以使用 PowerShell 返回父提交中的最新标签。

# Find the latest tag for each of the current commit's parents.
$parentsTags = git rev-parse HEAD^@ | ForEach-Object { 
    git describe --tags --abbrev=0 $_
}

# Out of all the tags, sorted oldest-to-newest, find the last one that's also one of the parents' tags.
$nextLatestTag = git for-each-ref --sort=creatordate --format '%(refname)' refs/tags `
    | Split-Path -Leaf `
    | Where-Object { $parentsTags.Contains($_) } `
    | Select-Object -Last 1
© www.soinside.com 2019 - 2024. All rights reserved.