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

Gab*_*art 36 git powershell autocomplete

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

PS> git checkout maTAB

会导致

PS> git checkout master
Run Code Online (Sandbox Code Playgroud)

fle*_*her 35

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

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

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

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

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

用法

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

  • 旁注:post-git(现在?)在官方 git 文档中引用:https://www.git-scm.com/book/en/v2/Appendix-A%3A-Git-in-Other-Environments -PowerShell 中的 Git (4认同)
  • POSH这个名字奇怪吗?POSH是Powershell的缩写 (3认同)
  • @GabeMoothart完成分支名称对我有用.也许他们自你的评论以来已经增加了对此的支持. (2认同)

Yur*_*tya 8

我写了这个小小的 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;
}
Run Code Online (Sandbox Code Playgroud)

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

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

function dif
{
    TortoiseGitProc.exe /command:repostatus
}
Run Code Online (Sandbox Code Playgroud)