在Powershell中执行git命令

时间:2017-12-29 16:04:25

标签: git powershell azure-devops

我尝试使用Powershell处理VSTS任务中的git脚本,但它没有按预期工作。

我正在做的是在最新标记放入发行说明之后获取最新的提交消息,这是基本的git命令:

git log `git describe --tags --abbrev=0`..HEAD --no-decorate --no-merges --abbrev=0 --pretty=format:"%s"

但是Powershell并不接受这种格式,所以我会做以下事情:

$latestTag = git describe --tags --abbrev=0
$releaseNotes = git log $latestTag..HEAD --no-decorate --no-merges --abbrev=0 --pretty=format:"%s"

似乎当我将变量$latestTag放在..HEAD旁边时,它会断行,如果我指定标签,例如。 v1.2.9而不是它运作良好的变量。

如何才能让它正常运行? 感谢。

2 个答案:

答案 0 :(得分:4)

您可以将表达式$latestTag..HEAD括在"标记中,如

$latestTag = git describe --tags --abbrev=0
$releaseNotes = git log "$latestTag..HEAD" --no-decorate --no-merges --abbrev=0 --pretty=format:"%s"

这与PowerShell扩展变量的方式有关,但我没有足够使用PS来真正理解变量。

答案 1 :(得分:1)

如果您想将它保留在一行中,您可以尝试使用powershell语法来嵌入与原始内容类似的注释。转换为PowerShell友好的语句我认为它会像

git log $(git describe --tags --abbrev=0)..HEAD --no-decorate --no-merges --abbrev=0 --pretty=format:"%s"

这应该解析$()中的表达式,然后将该结果作为文本插入git log命令,就像您原来的那样。