gpt4 book ai didi

git - 在Powershell中返回Git提交ID

转载 作者:行者123 更新时间:2023-12-03 01:29:26 28 4
gpt4 key购买 nike

我正在使用下面的代码来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 $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-NullWrite-Host或其他流之一。 I've written an answer here详细介绍了重定向和输出流。或者,您可以将-q开关与git pushgit commit一起使用来抑制它们的输出,但是如果您仍然希望看到此信息,但不以编程方式对其进行操作,我建议改为将输出通过管道传递到Verbose流或Information流。
  • 在这里,这不会给您造成问题,但是请不要使用括号()调用PowerShell函数。是的,将括号与静态方法或实例方法一起使用,但将括号与函数一起使用最终会作为子表达式进行评估,这将有效地将多个参数组合为一个参数。
  • [CmdletBinding()] attribute添加到函数定义中可以使您在cmdlet上调用自动参数。例如,gitcommit -Verbose将为gitcommit的执行启用详细流,您将能够看到否则为详细的输出。
  • 考虑在每个git命令之后检查$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"
    }

    关于git - 在Powershell中返回Git提交ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59735738/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com