最新标签和上一个标签之间的 Git 差异



我想做一个像这样的差异。

唯一的区别是我不想"手动"通知标签名称,我希望它们被 git 命令检索。

我知道git describe --tags返回我的最新标签。但是前一个呢?如何获得它?

基本上我想要的是:

$ git diff $(git_command_to_get_previous_tag) $(git describe --tags)

以及我不想要的:

$ git diff 1.0 2.0

您可以使用以下方法获取最新标签:

git tag --sort version:refname | tail -n 1

和上一个标签使用:

git tag --sort version:refname | tail -n 2 | head -n 1

把它放在一起,你可以使用这个得到一个差异:

git diff $(git tag --sort version:refname | tail -n 2 | head -n 1) $(git tag --sort version:refname | tail -n 1)

我需要做同样的事情,但用PowerShell而不是Bash。不过,一般方法是一样的。

获取所有标签,以防有新标签:

git fetch --all --tags

使用以下方法获取最新标签:

git tag -l --sort=-version:refname | select -first 1

使用以下方法获取上一个标记:

git tag -l --sort=-version:refname | select -first 2 | select -last 1

把它放在一起:

git diff $(git tag -l --sort=-version:refname | select -first 1) $(git tag -l --sort=-version:refname | select -first 2 | select -last 1)

我的实际示例用例:

git fetch --all --tags > $null; git diff tags/$(git tag -l --sort=-version:refname v* | select -first 1) tags/$(git tag -l --sort=-version:refname v* | select -first 2 | select -last 1) --name-only | Select-String -Pattern ".*.xml" | Write-Host

这将获取所有远程标签,以防有新标签,将输出重定向到$null,使其不显示,获取以 v 开头的最新标签之间更改的文件列表,然后过滤文件列表以仅返回以 .xml 结尾

的文件

最新更新