在PowerShell中为git命令创建别名?

Ric*_*ard 45 git powershell

我理解如何在PowerShell中为cmdlet创建别名,但是我想在PowerShell中创建一个别名,比如"git status"就像"gs"和"git pull origin master"那样"gpm"可以让任何人指出我在右边方向?

Jam*_*ran 54

您必须首先创建一个函数,其中包含您的命令.然后为该函数创建一个别名.

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)
Run Code Online (Sandbox Code Playgroud)

您可能还对名为posh-git的OS项目感兴趣,该项目旨在为git命令提供powershell环境.使用PS类型函数包装git命令,并提供一个新提示,显示提示中的状态和分支.

编辑:忘了添加如何使用Powershell找到如何做到这一点.

PS C:\Users\jpogran\code\git\scripts> get-help set-alias -examples
Run Code Online (Sandbox Code Playgroud)

这将向您展示如何使用set-alias为带有参数,管道等的命令创建别名的示例(最后一个适用于此处).

  • 当你有了一个函数时,为什么还要另一个别名呢?只需输入一个简短的函数名称,就像 @alex 对 posh kids ähh git 所做的那样。 (2认同)

Aar*_*bou 26

刚刚为自己创建了一些快捷方式,并希望分享:

创建PowerShell配置文件(如果您还没有):

New-Item -Type file -Path $PROFILE -Force
Run Code Online (Sandbox Code Playgroud)

打开它进行编辑:

notepad $PROFILE
Run Code Online (Sandbox Code Playgroud)

添加以下函数和别名:

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
Run Code Online (Sandbox Code Playgroud)

重新启动PowerShell会话时,您也应该能够将参数传递给别名.例如:

c "This is a commit message"
Run Code Online (Sandbox Code Playgroud)

更新:

以下是我常用的快捷方式:

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
Run Code Online (Sandbox Code Playgroud)

  • @MattW & 号运算符强制 PowerShell 将以下参数作为命令 (CMD) 执行。它可能并不总是必需的,但我发现它避免了可能由于命令末尾注入的参数 ($args) 被错误评估而导致的任何意外影响。 (4认同)
  • & 有什么作用? (2认同)

nic*_*laj 7

我不知道PowerShell,但您可以直接在Git中设置别名.


Ale*_*ler 6

我创建了posh-git-alias,您可以将其添加到PowerShell中$PROFILE.