From eb3ff52fda1ef752e21c45df33765b47807169ea Mon Sep 17 00:00:00 2001 From: Yuhang Guo <22561797+Sherry520@users.noreply.github.com> Date: Tue, 13 Aug 2024 10:56:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=99=84=E5=BD=95A=EF=BC=9Ap?= =?UTF-8?q?owershell=E6=9C=AA=E9=81=B5=E5=BE=AA=E5=8E=9F=E6=96=87=E6=AE=B5?= =?UTF-8?q?=E8=90=BD=E6=A0=BC=E5=BC=8F=E5=92=8C=E7=BF=BB=E8=AF=91=E7=BA=A6?= =?UTF-8?q?=E5=AE=9A=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sections/powershell.asc | 54 +++++++++++-------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/book/A-git-in-other-environments/sections/powershell.asc b/book/A-git-in-other-environments/sections/powershell.asc index 278a1f78..97a52870 100644 --- a/book/A-git-in-other-environments/sections/powershell.asc +++ b/book/A-git-in-other-environments/sections/powershell.asc @@ -5,55 +5,64 @@ (((posh-git))) Windows 中早期的命令行终端 `cmd.exe` 无法自定义 Git 使用体验,但是如果你正在使用 Powershell,那么你就十分幸运了。 这种方法同样适用于 Linux 或 macOS 上运行的 PowerShell Core。 -一个名为 Posh-Git (https://github.com/dahlbyk/posh-git[]) 的扩展包提供了强大的 tab 补全功能, 并针对提示符进行了增强,以帮助你聚焦于你的仓库状态。 +一个名为 posh-git (https://github.com/dahlbyk/posh-git[]) 的扩展包提供了强大的 tab 补全功能,并针对提示符进行了增强,以帮助你聚焦于你的仓库状态。 它看起来像: -.附带了 Posh-Git 扩展包的 Powershell。 -image::images/posh-git.png[附带了 Posh-Git 扩展包的 Powershell] +.附带了 posh-git 扩展包的 Powershell。 +image::images/posh-git.png[附带了 posh-git 扩展包的 Powershell] ==== 安装 + ===== 前提需求(仅限 Windows) -在可以运行 PowerShell 脚本之前,你需要将本地的 ExecutionPolicy 设置为 RemoteSigned -(可以说是允许除了 Undefined 和 Restricted 之外的任何内容)。如果你选择了 AllSigned -而非 RemoteSigned,那么你的本地脚本还需要数字签名后才能执行。如果设置为 RemoteSigned, -那么只有“ZoneIdentifier”设置为 Internet,即从 Web 上下载的脚本才需要签名,其它则不需要。 -如果你是管理员,想要为本机上的所有用户设置它,请使用“-Scope LocalMachine”。 -如果你是没有管理权限的普通用户,可使用“-Scope CurrentUser”来只为自己设置它。 + +在可以运行 PowerShell 脚本之前,你需要将本地的 `ExecutionPolicy` 设置为 `RemoteSigned`(可以说是允许除了 `Undefined` 和 `Restricted` 之外的任何内容)。 +如果你选择了 `AllSigned` 而非 `RemoteSigned`,那么你的本地脚本还需要数字签名后才能执行。 +如果设置为 `RemoteSigned`,那么只有 `ZoneIdentifier` 设置为 `Internet`,即从 Web 上下载的脚本才需要签名,其它则不需要。 +如果你是管理员,想要为本机上的所有用户设置它,请使用 `-Scope LocalMachine`。 +如果你是没有管理权限的普通用户,可使用 `-Scope CurrentUser` 来只为自己设置它。 有关 PowerShell Scopes 的更多详情: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_scopes[] 有关 PowerShell ExecutionPolicy 的更多详情: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-executionpolicy[] +对于所有用户使用以下命令来设置 `ExecutionPolicy` 为 `RemoteSigned`: + [source,powershell] ----- > Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy RemoteSigned -Force ----- ===== PowerShell Gallery + 如果你有 PowerShell 5 以上或安装了 PackageManagement 的 PowerShell 4,那么可以用包管理器来安装 posh-git。 有关 PowerShell Gallery 的更多详情: https://docs.microsoft.com/en-us/powershell/scripting/gallery/overview[] + [source,powershell] ----- > Install-Module posh-git -Scope CurrentUser -Force > Install-Module posh-git -Scope CurrentUser -AllowPrerelease -Force # 带有 PowerShell Core 支持的更新的 beta 版 ----- -如果你想为所有的用户安装 posh-git,请使用“-Scope AllUsers”并在管理员权限启动的 PowerShell 控制台中执行。 -如果第二条命令执行失败并出现类似 `Module 'PowerShellGet' was not installed by using Install-Module` 这样的错误, -那么你需要先运行另一条命令: + +如果你想为所有的用户安装 posh-git,请使用 `-Scope AllUsers` 并在管理员权限启动的 PowerShell 控制台中执行。 +如果第二条命令执行失败并出现类似 `Module 'PowerShellGet' was not installed by using Install-Module` 这样的错误,那么你需要先运行另一条命令: [source,powershell] ---- > Install-Module PowerShellGet -Force -SkipPublisherCheck ---- -之后你可以再试一遍。出现这个错误的原因是 Windows PowerShell 搭载的模块是以不同的发布证书签名的。 +之后你可以再试一遍。 +出现这个错误的原因是 Windows PowerShell 搭载的模块是以不同的发布证书签名的。 ===== 更新 PowerShell 提示符 -要在你的提示符中包含 Git 信息,那么需要导入 Posh-Git 模块。 -要让 PowerShell 在每次启动时都导入 Posh-Git,请执行 Add-PoshGitToProfile 命令, -它会在你的 $profile 脚本中添加导入语句。此脚本会在每次打开新的 PowerShell 终端时执行。 -注意,存在多个 $profile 脚本。例如,其中一个是控制台的,另一个则属于 ISE。 + +要在你的提示符中包含 Git 信息,那么需要导入 posh-git 模块。 +要让 PowerShell 在每次启动时都导入 posh-git,请执行 `Add-PoshGitToProfile` 命令,它会在你的 `$profile` 脚本中添加导入语句。 +此脚本会在每次打开新的 PowerShell 终端时执行。 +注意,存在多个 `$profile` 脚本。 +例如,其中一个是控制台的,另一个则属于 ISE。 + [source,powershell] ----- > Import-Module posh-git @@ -61,14 +70,17 @@ image::images/posh-git.png[附带了 Posh-Git 扩展包的 Powershell] ----- ===== 从源码安装 -只需从 (https://github.com/dahlbyk/posh-git[]) 下载一份 Posh-Git 的发行版并解压即可。 -接着使用 posh-git.psd1 文件的完整路径导入此模块: + +只需从 https://github.com/dahlbyk/posh-git[] 下载一份 posh-git 的发行版并解压即可。 +接着使用 `posh-git.psd1` 文件的完整路径导入此模块: + [source,powershell] ----- > Import-Module \src\posh-git.psd1 > Add-PoshGitToProfile -AllHosts ----- -它将会向你的 `profile.ps1` 文件添加适当的内容,Posh-Git 将会在下次打开 PowerShell 时启用。 +它将会向你的 `profile.ps1` 文件添加适当的内容,posh-git 将会在下次打开 PowerShell 时启用。 + 命令提示符显示的 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[] +如何定制 Posh-Git 提示符的详情见: https://github.com/dahlbyk/posh-git/blob/master/README.md#customization-variables[]。