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

75

我知道如何在PowerShell中为cmdlet创建别名,但我想为像git status这样的命令创建一个简短的别名 gs ,以及把git pull origin master命令创建成gpm。请问有谁能指点一下我吗?

9个回答

82

你需要先创建一个函数,其中包含你的命令。然后创建该函数的别名。

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)

你可能还对名为 posh-git 的操作系统项目感兴趣,该项目旨在为git命令提供PowerShell环境。将git命令封装为PS类型函数,并提供一个新的提示符,显示提示符中的状态和分支。

编辑:忘记添加如何使用Powershell进行此操作。

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

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


1
在编写独立脚本时,如果能够添加git函数和别名,并从您的个人资料中引用它们,则可以获得额外的加分。 - Goyuix
1
请访问http://technet.microsoft.com/library/hh849938.aspx#sectionSection8以获取在线示例 :) - Chris Pfohl
如果您按照上述定义自己的 Get-GitStatus 函数,您将覆盖 posh-git 的 Get-GitStatus 函数,后者用于获取结构化状态信息以构建自定义提示符。 - Andrew Spencer
4
为什么你已经有了一个函数,还需要另一个别名呢?就像@alex在posh kid ähh git中使用简短的函数名称一样,只需将函数命名简短即可,不必再另起别名。 - Timo

80

我为自己创建了一些快捷方式,想要分享一下:

创建一个PowerShell配置文件(如果你还没有):

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

打开它进行编辑:

notepad $PROFILE

添加以下函数和别名:

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

当您重新启动PowerShell会话时,您应该能够将参数传递给别名。例如:
c "This is a commit message"

更新:

以下是我经常使用的一些快捷键:

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

2
& 做什么用的? - Matt W
5
& 运算符强制PowerShell将其后面的参数作为命令(CMD)来执行。虽然它不一定总是必需的,但我发现这可以避免由于在命令结束时注入的参数($args)被错误地评估而导致的任何意外效果。 - Aaron Tribou
在这种情况下,您实际上不再需要别名。您只需将函数命名为例如s,然后直接调用它作为命令即可。 - Daniel Werner
值得注意的是 Get-GitStatus 已经存在(至少在我的Win11/VisualStudio机器上是这样)。那个Get-GitStatus 是另一回事,它将被上面的代码替换,既有好处也有坏处。 - LosManos

12

我创建了posh-git-alias,你只需将其添加到你的PowerShell $PROFILE中即可。


1
谢谢您!对我非常有用。 - 681234
五年后仍然是最新的。您应该将列表重命名为 Posh Git 函数... - Timo

11

我不熟悉PowerShell,但你可以在Git中直接设置别名


上面的链接对我没用。这个链接提供了类似的信息 https://git.wiki.kernel.org/articles/a/l/i/Aliases.html - Joe Simmonds

4
你需要创建一个profile.ps1文件并将其放在名为WindowsPowerShell的文件夹中,该文件夹位于我的文档目录下。
然后在profile.ps1中添加以下行:
set-alias wit 'C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\witadmin.exe'

2

您可以创建 PowerShell 配置文件,以便在打开 PowerShell 时自动运行。首先打开 PowerShell 并创建 PowerShell 配置文件(如果您还没有):

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

此命令将在“文档”中创建名为WindowsPowerShell的目录,并在其中创建名为Microsoft.PowerShell_profile.ps1的文件。

如果您想知道Microsoft.PowerShell_profile.ps1的完整路径,请输入以下命令:

$PROFILE

使用以下命令从 PowerShell 中打开它:

powershell_ise.exe $PROFILE

然后编写您要别名的所有命令,例如:

function gn{git init}
# @args you can pass multi arguments for example
# ga fileName1 fileName2 
function add{git add @args}
function commit { git commit -m @args }
function gac{git add .;git commit -m @args}
function gpm{git push origin master}
function pull{git pull origin master}
function gl{git log}
function glo{git log --oneline}
function gch{git checkout @args}

# @args is optional to add argument
function gb{git branch @args}
function gs{git status}
function gd{git diff}

保存并关闭PowerShell,再次打开它并通过函数名称调用别名命令,例如初始化Git仓库写入以下命令:

gn

要添加文件,请使用以下命令:

add fileName1

查看GIF图像 aliases git commands from PowerShell

要显示别名命令的内容,请使用以下命令:

Get-Content $PROFILE


0
如果您使用 PowerShell,则需要添加包括您想要创建别名的命令的函数。
例如,您想要为 git fetch -all 创建一个别名,则需要在文件 Microsoft.PowerShell_profile 中添加以下内容:
function gfa{git fetch --all}

如果您在PowerShellWindowsTerminal中运行gfa,则会执行git fetch --all

注意:要在记事本中打开Microsoft.PowerShell_profile文件,请在PowerShellWindowsTerminal中运行notepad $profile。或者您可以导航到C:\Users\YOUR_USER\Documents\WindowsPowerShell获取该文件。

以下是常见函数列表:


function gs{git status}
function ga{git add .}
function gfa{git fetch --all}

function grman{git rebase -i main}
function grmas{git rebase -i master}
function grdev{git rebase -i develop}

function gitc{ git commit -m @args }
function gac{git add .;git commit -m @args}
function pushmas{git push origin master}
function pushman{git push origin main}
function pushdev{git push origin develop}

function pullman{git pull origin main}
function pullmas{git pull origin main}
function pulldev{git pull origin develop}

function pull{git pull origin master}
function gl{git log}
function glo{git log --oneline}
function gch{git checkout @args}
function gcn{git checkout -b @args}

function gman{git checkout main}
function gmas{git checkout master}
function gdev{git checkout develop}

function gb{git branch @args}
function gs{git status}
function gd{git diff}

这个GitHub Gist我的链接Microsoft.PowerShell_profile


0

也许这个问题来得有点晚了,但对于那些仍然有类似疑问的人,请安装这个powershell模块:

PS> Install-Module -Name git-aliases

根据它的描述,

这是一个 PowerShell 模块,提供了来自 Oh My Zsh 的 Git 插件的部分别名。


-1
在Windows上,我使用位于用户主目录中的.gitconfig文件中的以下内容:
[alias]
  co = checkout
  ci = commit
  st = status
  sw = switch
  d  = diff
  hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
  type = cat-file -t
  dump = cat-file -p

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接