Git
章节 ▾ 第二版

A1.8 附录 A:其他环境中的 Git - PowerShell 中的 Git

PowerShell 中的 Git

Windows 上传统的命令行终端 (cmd.exe) 并不真正能够提供自定义的 Git 体验,但如果您使用的是 PowerShell,那么您很幸运。如果您在 Linux 或 macOS 上运行 PowerShell Core,此方法同样适用。一个名为 posh-git 的包 (https://github.com/dahlbyk/posh-git) 提供了强大的制表符自动完成功能,以及增强的提示符,以帮助您随时掌握仓库状态。它看起来像这样

PowerShell with Posh-git
图 187. 使用 Posh-git 的 PowerShell

安装

先决条件(仅限 Windows)

在您能够在机器上运行 PowerShell 脚本之前,您需要将本地 ExecutionPolicy 设置为 RemoteSigned(基本上,除了 UndefinedRestricted 之外的任何值)。如果您选择 AllSigned 而不是 RemoteSigned,则本地脚本(您自己的脚本)也需要进行数字签名才能执行。使用 RemoteSigned,只有 ZoneIdentifier 设置为 Internet(从网络下载)的脚本需要签名,其他脚本不需要。如果您是管理员并且想要为该机器上的所有用户设置它,请使用 -Scope LocalMachine。如果您是普通用户,没有管理员权限,则可以使用 -Scope CurrentUser 仅为您自己设置。

要将ExecutionPolicy的值设置为所有用户的RemoteSigned,请使用以下命令

> Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy RemoteSigned -Force

如果您至少拥有 PowerShell 5 或安装了 PackageManagement 的 PowerShell 4,则可以使用包管理器为您安装 posh-git。

> Install-Module posh-git -Scope CurrentUser -Force
> Install-Module posh-git -Scope CurrentUser -AllowPrerelease -Force # Newer beta version with PowerShell Core support

如果要为所有用户安装 posh-git,请改用-Scope AllUsers并在提升权限的 PowerShell 控制台中执行该命令。如果第二个命令因类似于Module 'PowerShellGet' was not installed by using Install-Module的错误而失败,则需要先运行另一个命令

> Install-Module PowerShellGet -Force -SkipPublisherCheck

然后您可以返回并重试。出现这种情况是因为与 Windows PowerShell 捆绑在一起的模块使用不同的发布证书进行签名。

更新 PowerShell 提示符

要将 Git 信息包含在提示符中,需要导入 posh-git 模块。要使 posh-git 在每次 PowerShell 启动时都导入,请执行Add-PoshGitToProfile命令,该命令会将导入语句添加到您的$profile脚本中。每次打开新的 PowerShell 控制台时都会执行此脚本。请记住,存在多个$profile脚本。例如,一个用于控制台,另一个用于 ISE。

> Import-Module posh-git
> Add-PoshGitToProfile -AllHosts

从源代码安装

只需从https://github.com/dahlbyk/posh-git/releases下载 posh-git 版本并解压缩。然后使用posh-git.psd1文件的完整路径导入模块

> Import-Module <path-to-uncompress-folder>\src\posh-git.psd1
> Add-PoshGitToProfile -AllHosts

这会将正确的行添加到您的profile.ps1文件中,并且下次打开 PowerShell 时 posh-git 将处于活动状态。

有关提示符中显示的 Git 状态摘要信息的说明,请参阅:https://github.com/dahlbyk/posh-git/blob/master/README.md#git-status-summary-information有关如何自定义 posh-git 提示符的更多详细信息,请参阅:https://github.com/dahlbyk/posh-git/blob/master/README.md#customization-variables

scroll-to-top