Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating aliases in PowerShell for git commands?

Tags:

git

powershell

I understand how to create aliases in PowerShell for cmdlets fine, but I want to create an alias in PowerShell for things like git status as just gs, and git pull origin master as gpm. Can anyone point me in the right direction?

like image 650
Richard Avatar asked May 18 '10 15:05

Richard


People also ask

How do you create aliases in PowerShell?

PowerShell includes built-in aliases that are available in each PowerShell session. The Get-Alias cmdlet displays the aliases available in a PowerShell session. To create an alias, use the cmdlets Set-Alias or New-Alias . In PowerShell 6, to delete an alias, use the Remove-Alias cmdlet.

How do I make an alias command in git?

It is important to note that there is no direct git alias command. Aliases are created through the use of the git config command and the Git configuration files. As with other configuration values, aliases can be created in a local or global scope.

What are alias commands in PowerShell?

An alias is an alternate name or nickname for a cmdlet or for a command element, such as a function, script, file, or executable file. You can use the alias instead of the command name in any PowerShell commands.


2 Answers

You will have to create a function first, that has your command in it. Then create an alias to that function.

PS C:\Users\jpogran\code\git\scripts> function get-gitstatus { git status }  PS C:\Users\jpogran\code\git\scripts> get-gitstatus # On branch master nothing to commit (working directory clean)  PS C:\Users\jpogran\code\git\scripts> Set-Alias -Name gs -Value get-gitstatus  PS C:\Users\jpogran\code\git\scripts> gs # On branch master nothing to commit (working directory clean) 

You might also be interested in the OS project called posh-git that aims to provide a powershell environment for git commands. Wraps git commands with PS type functions and also provides a new prompt that shows the status and branch in your prompt.

EDIT: Forgot to add how to find out how to do this using Powershell.

PS C:\Users\jpogran\code\git\scripts> get-help set-alias -examples 

This will show you examples (the last one applies here) of how to use set-alias to create aliases to commands with paramaters, pipelines, etc.

like image 51
James Pogran Avatar answered Oct 02 '22 22:10

James Pogran


Just created some shortcuts for myself and wanted to share:

Create a PowerShell profile (if you don't already have one):

New-Item -Type file -Path $PROFILE -Force 

Open it to edit:

notepad $PROFILE 

Add the following functions and aliases:

function Get-GitStatus { & git status $args } New-Alias -Name s -Value Get-GitStatus function Set-GitCommit { & git commit -am $args } New-Alias -Name c -Value Set-GitCommit 

When you restart your PowerShell session, you should be able to pass arguments to the aliases as well. e.g.:

c "This is a commit message" 

Update:

Here are some more of my frequently-used shortcuts:

function Get-GitStatus { & git status -sb $args } New-Alias -Name s -Value Get-GitStatus -Force -Option AllScope function Get-GitCommit { & git commit -ev $args } New-Alias -Name c -Value Get-GitCommit -Force -Option AllScope function Get-GitAdd { & git add --all $args } New-Alias -Name ga -Value Get-GitAdd -Force -Option AllScope function Get-GitTree { & git log --graph --oneline --decorate $args } New-Alias -Name t -Value Get-GitTree -Force -Option AllScope function Get-GitPush { & git push $args } New-Alias -Name gps -Value Get-GitPush -Force -Option AllScope function Get-GitPull { & git pull $args } New-Alias -Name gpl -Value Get-GitPull -Force -Option AllScope function Get-GitFetch { & git fetch $args } New-Alias -Name f -Value Get-GitFetch -Force -Option AllScope function Get-GitCheckout { & git checkout $args } New-Alias -Name co -Value Get-GitCheckout -Force -Option AllScope function Get-GitBranch { & git branch $args } New-Alias -Name b -Value Get-GitBranch -Force -Option AllScope function Get-GitRemote { & git remote -v $args } New-Alias -Name r -Value Get-GitRemote -Force -Option AllScope 
like image 31
Aaron Tribou Avatar answered Oct 02 '22 20:10

Aaron Tribou