Add tab completion for Git branches in Powershell Add tab completion for Git branches in Powershell powershell powershell

Add tab completion for Git branches in Powershell


For that to be possible, a git provider for PowerShell would need to exist.

After a quick search, something similar apparently exists, the bizarre but aptly named posh-git:

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

A set of PowerShell scripts which provide Git/PowerShell integration

  • Prompt for Git repositories: The prompt within Git repositories can show the current branch and the state of files (additions, modifications,
    deletions) within.
  • Tab completion: Provides tab completion for common commands when using git. E.g. git ch<tab> --> git checkout

Usage

See profile.example.ps1 as to how you can integrate the tab completion and/or git prompt into your own profile. You can also choose whether advanced git commands are shown in the tab expansion or only simple/common commands. Default is simple.


I wrote this little PS "gem", if posh-git is too much.
Just put it in your PowerShell profile to be able to type co  (with a space) and hit Tab to trigger completion and cycle through the list of branches:

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;}

UPDATE: refactored to return a list of branches when tab-completion invoked after space and no partial string can be matched. Will return "master" if this is only one branch

As a bonus, did you know you can call TortoiseGit from shell?

function dif{    TortoiseGitProc.exe /command:repostatus}