代码之家  ›  专栏  ›  技术社区  ›  marc_s MisterSmith

试着把我的脑袋绕在PowerShell上-函数,别名等等

  •  1
  • marc_s MisterSmith  · 技术社区  · 7 年前

    我是一个经验丰富的C#程序员,但到目前为止,我几乎没有涉足过PowerShell(到目前为止,我使用了另一种替代的Windows命令行产品)。

    我想做的是定义函数和别名,让我在PowerShell中使用Git的工作更轻松——是的,我知道 时髦的吉特 ,并且已经检查过了-但这似乎主要是为了在PowerShell中呈现一个漂亮的UI。

    我想为我一直使用并且已经成功定义的通用Git命令定义“快捷方式” 到目前为止都是化名。

    我现在正在努力解决的是:我想要一个 git pull (还有 git push ),可以“按原样”运行-例如,按原样运行 ,或者可以运行我需要使用的最频繁的命令- git pull origin master .

    我试着定义

    function invoke-gitpull { git pull $args }
    

    Set-Alias gtp invoke-gitpull 
    Set-Alias gtpom invoke-gitpull origin master
    

    但无论如何,PS不喜欢这样:-(

    集合别名:找不到接受参数“origin”的位置参数。

    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    然后我还尝试为 invoke-gitpull

    function invoke-gitpull ([String] $remote, [String] $branch) { git pull $remote $branch }
    

    以为如果我提供 无参数值 ,那么 git拉 invoke-gitpull -remote origin -branch master ,那么 会被称为-但是PS不同意我的观点:

    设置别名:找不到与参数名称“remote”匹配的参数。
    +设置别名gtpom invoke gitpull-remote origin-branch master

    +CategoryInfo:InvalidArgument:(:)[Set Alias],参数BindingException
    +FullyQualifiedErrorId:NamedParameterNotFound,Microsoft.PowerShell.Commands.SetAliasCommand

    我还尝试了参数 里面 功能:

    但我又犯了同样的错误。

    同质光波导 它的作用是什么?我好像在兜圈子,不明白自己做错了什么。。。。。有人能开导我吗?

    1 回复  |  直到 7 年前
        1
  •  5
  •   Maximilian Burszley    7 年前

    别名 (使用 *-Alias cmdlet)仅限于指向命令名 只有 , 没有争论 gtp origin master ),您需要将它们定义为 功能 :

    function invoke-gitpull { git pull $args }
    Set-Alias -Name gtp -Value invoke-gitpull
    function gtpom { gtp origin master }
    

    但如果这只是一个私人使用的东西,我会跳过别名,只是把它们包括在你的 $Profile

    function gtp() { & GIT.exe pull @args }
    function gtpom() { gtp origin master }
    
    推荐文章