Git
章节 ▾ 第 2 版

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

Git 在 PowerShell 中

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 控制台中执行命令。如果第二个命令失败并出现类似 模块“PowerShellGet”未通过 Install-Module 安装 的错误,则你需要先运行另一个命令

> Install-Module PowerShellGet -Force -SkipPublisherCheck

然后你可以返回并重试。发生这种情况,是因为随 Windows PowerShell 一起提供的模块是用不同的发布证书签名的。

更新 PowerShell 提示

要在提示中包含 Git 信息,需要导入 posh-git 模块。要让 PowerShell 每次启动时都导入 posh-git,请执行 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