我正在寻找一个 git 命令,它可以显示当前分支中
两个最新标签之间的
git log
。
即如果最近的两个标签是
build_341
和 build_342
,那么我希望最终得到 git log build_341..build_342
的输出
我知道我可以使用
git describe --abbrev=0
获取最新的标签,但我不知道如何显示第二个最新的标签。
嗯,可以使用以下方法获取第二个最新标签:
git describe --abbrev=0 $(git describe --abbrev=0)^
因此我可以使用以下方法获取两个最新标签之间的日志:
git log $(git describe --abbrev=0 $(git describe --abbrev=0)^)..$(git describe --abbrev=0)
不太漂亮,但它似乎可以工作(只要你的 shell 支持
$()
命令替换)。欢迎其他答案。
如果您遇到 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