When inside a Git repository, is it possible to add tab completion for branches to Powershell? For example:
PS> git checkout ma
TAB
would result in
PS> git checkout master
The git branch command lets you create, list, rename, and delete branches.
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 }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With