繁体   English   中英

在 Powershell 中为 Git 分支添加选项卡完成

[英]Add tab completion for Git branches in Powershell

在 Git 存储库中时,是否可以为 Powershell 的分支添加选项卡完成功能? 例如:

PS> git checkout ma TAB

会导致

PS> git checkout master

为此,需要存在 PowerShell 的 git 提供程序。

快速搜索后,显然存在类似的东西,奇怪但恰如其分地命名为 posh-git:

http://github.com/dahlbyk/posh-git

一组提供 Git/PowerShell 集成的 PowerShell 脚本

  • Git 存储库提示:Git 存储库中的提示可以显示当前分支和文件状态(添加、修改、
    删除)内。
  • Tab 补全:在使用 git 时为常用命令提供 Tab 补全。 例如git ch<tab> --> git checkout

用法

有关如何将选项卡完成和/或 git 提示集成到您自己的配置文件中的信息,请参阅 profile.example.ps1。 您还可以选择是在选项卡扩展中显示高级 git 命令还是仅显示简单/常用命令。 默认很简单。

我写了这个小小的 PS“gem”,如果 posh-git 太多了。
只需将其放入您的PowerShell 配置文件中,即可键入co (带空格)并按Tab键触发完成并循环浏览分支列表:

function co
{
    param(
        [Parameter(Mandatory)]
        [ValidateNotNullOrEmpty()]
        [ArgumentCompleter({
            param($pCmd, $pParam, $pWord, $pAst, $pFakes)

            $branchList = (git branch --format='%(refname:short)')

            if ([string]::IsNullOrWhiteSpace($pWord)) {
                return $branchList;
            }

            $branchList | Select-String "$pWord"
        })]
        [string] $branch
    )

    git checkout $branch;
}

更新:重构为在空格后调用制表符完成时返回分支列表,并且无法匹配部分字符串。 如果这只是一个分支,将返回“master”

作为奖励,您知道可以从 shell 调用 TortoiseGit 吗?

function dif
{
    TortoiseGitProc.exe /command:repostatus
}

为PowerShell编写了通用提供程序,其行为可以完全在powershell脚本中实现。 如果一个GIT提供者不存在(或已死或不足),这将是原型GIT提供者的理想起点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM