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

时间:2010-08-27 17:30:23

标签: git powershell autocomplete

在Git存储库中,是否可以将分支的Tab键完成添加到Powershell?例如:

PS> git checkout ma TAB

会导致

PS> git checkout master

3 个答案:

答案 0 :(得分:27)

为了实现这一点,需要存在PowerShell的git提供程序。

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

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

  

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

     
      
  • 提示Git存储库:Git存储库中的提示可以   显示当前分支和状态   文件(添加,修改,
      删除)。
  •   
  • 选项卡完成:为常用命令提供选项卡完成时间   用git。例如。 git ch<tab> - &gt;   git checkout
  •   
     

用法

     

请参阅profile.example.ps1了解您的情况   可以集成选项卡完成   和/或git提示你自己   轮廓。您也可以选择是否   高级git命令显示在   标签扩展或仅简单/常见   命令。默认很简单。

答案 1 :(得分:2)

我写了一个generic provider for PowerShell,其行为可以完全在powershell脚本中实现。如果一个GIT提供者不存在(或者已经死亡,或者说是不完整的话),那么这将是一个理想的起点。

答案 2 :(得分:1)

如果posh-git太多,我会写这个小PS“ gem”:

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
}