我是一个经验丰富的C#程序员,但是到目前为止,我还只是涉猎PowerShell(到目前为止,还使用了另一种Windows命令行产品)。
我正在尝试自动化一些Git东西,但遇到了一些困难,似乎无法找到解决方案...(到目前为止,也没有视频教程或博客文章对此有所帮助) 。
我想做的是定义使我在PowerShell中使用Git的工作更舒适的函数和别名-是的,我知道 Posh-Git ,并且也已经进行了检查-但这似乎在解决大多数问题在PowerShell中呈现漂亮的UI。
我想为我一直使用的通用Git命令定义“快捷方式”-到目前为止已经成功定义了一些别名。
我现在正在努力的是这样的:我想为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不喜欢这样:-(
然后,我还尝试为
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与我不同意:然后我还尝试了函数内部的参数:
但是我又遇到了同样的错误。
那么 HOW 我是否必须为
invoke-gitpull
函数定义这些参数才能起作用?我似乎正在转圈,无法完全了解我在做什么错.....有人可以启发我吗? 最佳答案
别名(使用*-Alias
cmdlet)仅限于指向命令名称而没有参数。如果希望将别名的参数用作另一个别名(例如gtp origin master
),则需要将它们定义为函数:
function invoke-gitpull { git pull $args }
Set-Alias -Name gtp -Value invoke-gitpull
function gtpom { gtp origin master }
但是,如果这只是私有(private)用途,我将跳过别名,只将别名包含在您的
$Profile
中:function gtp() { & GIT.exe pull @args }
function gtpom() { gtp origin master }
关于git - 试图将我的头缠在PowerShell上-函数,别名等,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52466868/