gpt4 book ai didi

git - 试图将我的头脑围绕在 PowerShell 上——函数、别名等

转载 作者:行者123 更新时间:2023-12-03 00:43:58 25 4
gpt4 key购买 nike

我是一名经验丰富的 C# 程序员,但到目前为止,我只涉足 PowerShell(迄今为止使用过另一种替代的 Windows 命令行产品)。

我正在尝试自动化一些 Git 的东西,我遇到了一些困难,似乎找不到任何解决方案......(到目前为止,似乎没有视频教程或博客文章有很大帮助) .

我想要做的是定义函数和别名,使我在 PowerShell 中使用 Git 更加舒适——是的,我知道 时髦的 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不喜欢这样:-(

Set-Alias : A positional parameter cannot be found that accepts argument 'origin'.
+ Set-Alias gtpom invoke-gitpull origin master
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 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 : A parameter cannot be found that matches parameter name 'remote'.
+ Set-Alias gtpom invoke-gitpull -remote origin -branch master
+ ~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Set-Alias], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.SetAliasCommand



然后我还尝试了函数内部的参数:

但我又遇到了同样的错误。

所以 如何我必须为我的 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/

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