如何在Powershell配置文件中使用函数定义带有选项的命令的别名?



我已经为git定义了一堆命令别名。这些都是:

del alias:gp -Force
del alias:gl -Force
del alias:gcm -Force
function get-gst { git status }
set-alias -name gst -value get-gst
function get-gco ([string]$branch) { 
git checkout "$branch"
}
set-alias -name gco -value get-gco 
function get-gcob ([string]$branch) { 
git checkout -b "$branch"
}
set-alias -name gcob -value get-gcob
function get-gp { git push }
set-alias -name gp -value get-gp 
function get-gl { git pull }
set-alias -name gl -value get-gl 
function get-gcm ([string]$message) { 
git commit -m "$message"
}
set-alias -name gcm -value get-gcm 
function get-ga ([string]$path) { 
git add "$path"
}
set-alias -name ga -value get-ga
function get-gap { git add --patch }
set-alias -name gap -value get-gap
function get-gsta { git stash push }
set-alias -name gsta -value get-gsta 
function get-gstp { git stash pop }
set-alias -name gstp -value get-gstp 
function get-glo { git log --oneline }
set-alias -name glo -value get-glo 
function get-a ([string]$option, [string]$option2, [string]$option3) { 
php artisan "$option" "$option2" "$option3"
}
set-alias -name a -value get-a

具体来说,这是Powershell的$Profile.AllUsersAllHosts

的内容目前,我对git checkout branchgit checkout -b branch有2个独立的功能。别名分别为gco branchgcob branch

我想要的是一个类似于我的列表中的最后一个别名(php artisan)的函数,这样我就可以有这样的东西:

function get-gco ([string]$option, [string]$option2) { 
git checkout "$option" "$option2"
}
set-alias -name gco -value get-gco 

. .这将允许我编写gco -b branch,或者实际上将任何其他选项传递给git checkout命令。不幸的是,这不起作用,在写gco -b newBranchName时什么也没有发生(就好像我只写了git chekout),但如果我写gco "-b" newBranchNamegco '-b' newBranchName,它确实起作用。

你认为有可能使这个函数在Powershell中不需要引号吗?你会怎么做?或者,是否可以在其他命令行界面中执行,例如git bash?

设置$args自动变量:

function get-gco {
git checkout @args
}

这将按原样传递任何附加参数给git checkout,所以现在您可以这样做:

get-gco existingBranch
# or
get-gco -b newBranch

…使用相同的函数

最新更新