我是一位经验丰富的C#程序员,但是到目前为止,我还只是涉猎PowerShell(到目前为止,还使用了另一种Windows命令行产品)。
我正在尝试使某些Git东西自动化,但遇到了一些困难,似乎无法找到解决这些问题的任何方法...(到目前为止,没有视频教程或博客文章对此有所帮助,或者。)
我想做的是定义使我在PowerShell中使用Git的工作更舒适的函数和别名-是的,我了解 Posh-Git ,并且也已将其签出-但这似乎主要是为了在PowerShell中呈现漂亮的UI。
我想为我一直使用的通用Git命令定义“快捷方式”,并且到目前为止已经成功定义了 some 别名。
我现在正在努力的是:我想为git pull
(还有git push
)起一个别名,它可以按原样运行-例如仅运行git pull
,或者可以运行我需要使用的最频繁的命令-git pull origin master
。
我试图定义一个 函数:
function invoke-gitpull { git pull $args }
,然后为此定义两个别名-一个仅按原样调用此函数,一个提供两个参数-如下:
Set-Alias gtp invoke-gitpull
Set-Alias gtpom invoke-gitpull origin master
但是不知何故,PS不喜欢这样:-(
Set-Alias:找不到接受参数'origin'的位置参数。
+设置别名gtpom invoke-gitpull原始主文件
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo:InvalidArgument:(:) [Set-Alias],ParameterBindingException
+ FullyQualifiedErrorId:PositionalParameterNotFound,Microsoft.PowerShell.Commands.SetAliasCommand
然后,我还尝试为invoke-gitpull
函数定义参数-像这样:
function invoke-gitpull ([String] $remote, [String] $branch) { git pull $remote $branch }
认为如果我没有提供参数值,则将发出git pull
-如果我提供两个参数值-invoke-gitpull -remote origin -branch master
,则git pull origin master
被称为-但同样,PS与我不同意:
Set-Alias:找不到与参数名称“ remote”匹配的参数。
+设置别名gtpom invoke-gitpull-远程原点-分支主控
+ ~~~~~~~~
+ CategoryInfo:InvalidArgument:(:) [Set-Alias],ParameterBindingException
+ FullyQualifiedErrorId:NamedParameterNotFound,Microsoft.PowerShell.Commands.SetAliasCommand
然后我也尝试在函数内 使用参数:
但是我又遇到了同样的错误。
因此如何,我必须为我的invoke-gitpull
函数定义这些参数才能起作用吗?我似乎转圈了,不太了解我在做什么错.....有人可以启发我吗?
答案 0 :(得分:4)
别名(使用*-Alias
cmdlet)只能指向仅 ,不带参数的命令名称。如果希望将别名的参数用作另一个别名(例如gtp origin master
),则需要将其定义为 functions :
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 }