我使用POSH git for powershell,例如
git checkout mini<tab>
我得到了
git checkout minidisk
我想为 git checkout 创建别名 gco
gco mini<tab>
获取
gco minidisk
是否可以将标签完成转发给POSH git处理程序?
答案 0 :(得分:7)
没有&#34; git handler&#34;这样的东西。 posh-git shell唯一做的就是用自己的实现替换默认的TabExpansion函数。
您需要修改其实施以获得所需的行为。
如果要修改它,只需在posh-git shell中运行此命令:
notepad (Get-Command TabExpansion).ScriptBlock.File
您可以使用您选择的编辑器替换记事本。
修改强>
在这种特殊情况下,您可以采用几种方法。尽管我不会投入太多时间,但是我会尝试说服你实际使用的标签功能&#39; git checkout&#39;:
function TabExpansion($line, $lastWord) {
$line = $line -replace '^gco ', 'git checkout '
# rest of the function as it is...
BTW:无法在PowerShell中创建类似的别名:PowerShell中的别名可以替换命令,而不是命令+参数(对于后者,您需要定义函数)。
答案 1 :(得分:1)
有一种简单的方法可以通过PowerTab powershell插件添加自己的标签扩展挂钩。一旦安装了PowerTab。 (您可以通过使用管理员权限shell巧妙地执行此操作),然后在您的powershell配置文件中创建以下内容
# Load posh-git example profile
. 'C:\tools\poshgit\dahlbyk-posh-git-c481e5b\profile.example.ps1'
# Create a function for registering alias's that support tab expansion
function Register-TabExpansion-Alias([string]$alias, [string]$expansion) {
Invoke-Expression "function global:$alias { $expansion `$args }"
Register-TabExpansion -Name $alias -Type Command {
param($Context, [ref]$TabExpansionHasOutput, [ref]$QuoteSpaces)
$Argument = $Context.Argument
if ( $Argument -notlike '^\$' ){
$TabExpansionHasoutput.Value = $true
TabExpansion "$expansion $Argument"
}
}.GetNewClosure()
}
Register-TabExpansion-Alias "gco" "git checkout"
Register-TabExpansion-Alias "grb" "git rebase"
答案 2 :(得分:-1)
另一个选择是使用git别名,例如
git config --global alias.co checkout
现在你可以使用:
git co develop
与gco
不太短,但其他噱头可能会识别git co
以上gco
。