在Powershell中返回Git提交id
我正在使用下面的代码git提交更改并返回commitid在Powershell中返回Git提交id,git,powershell,Git,Powershell,我正在使用下面的代码git提交更改并返回commitid function gitcommit() { git commit -a -m "message" $commitid= git rev-parse HEAD git push -q $comid=$commitid return $comid } function main() { $commitid= gitcommit() Write-Host "Commit id is $commiti
function gitcommit()
{
git commit -a -m "message"
$commitid= git rev-parse HEAD
git push -q
$comid=$commitid
return $comid
}
function main()
{
$commitid= gitcommit()
Write-Host "Commit id is $commitid"
}
在gitcommit
函数中,我将获得正确的提交id,如7de234567f68fa8a3b40a95abc4d6d82a75d93
。
但我面临的问题是,当以字符串形式返回提交id时,它是以类型系统的形式出现的。包含以下内容的数组
On branch master, Your branch is up to date with 'origin/master'., , nothing to commit, working tree clean, On branch master, Your branch is up to date with 'origin/master'., , nothing to commit, working tree clean,7de234567f68fa8a3b40a95abc4d6d82a75d93
这里发生了一些事情:
return
关键字不是必需的。在PowerShell中,return
函数更像Write Output$variable;break
-它将变量写入输出流,然后返回到父范围。除非您希望在其余代码运行之前停止函数的执行,否则这不是必需的git commit
命令使管道饱和,请将命令输出通过管道传输到Out Null
、Write Host
或其他流之一。这将非常详细地介绍重定向和输出流。或者,您可以将-q
开关与git push
和git commit
一起使用来抑制它们的输出,但是我建议您将输出通过管道传输到Verbose
流或Information
流,如果您仍然希望看到这些信息,但不希望以编程方式对其进行操作()
。是的,在静态方法或实例方法中使用括号,但在函数中使用括号最终将作为子表达式进行计算,这将有效地将多个参数组合成一个参数gitcommit-Verbose
将为执行gitcommit
启用详细流,您将能够看到其他详细输出$LASTEXITCODE-eq 0
——该命令不能保证成功,在这种情况下,您可能希望输出不同的内容function gitcommit
{
[CmdletBinding()]
git commit -a -m "message" | Write-Verbose
if( $LASTEXITCODE -ne 0 ){
Write-Warning "``git commit`` failed with exit code ${LASTEXITCODE}"
return # Return now because the commit failed
}
git rev-parse HEAD # This does not need to be returned because it outputs to the output stream
git push | Write-Verbose
if( $LASTEXITCODE -ne 0 ){
Write-Warning "``git push`` failed with exit code ${LASTEXITCODE}"
}
}
function main()
{
$commitid= gitcommit
Write-Host "Commit id is $commitid"
}
将
-z
标志添加到git commit
命令以抑制其输出。