ترمینال قدیمی Windows (cmd.exe) تجربه کار با Git سفارشیشده را فراهم نمیکند، اما اگر از PowerShell استفاده میکنید، خوششانس هستید.
این روش حتی در PowerShell Core روی Linux یا macOS نیز کار میکند.
یک پکیج به نام posh-git ([GitHub link](https://github.com/dahlbyk/posh-git)) امکانات قدرتمند tab-completion و همچنین یک prompt پیشرفته ارائه میدهد تا بتوانید وضعیت repository خود را بهخوبی دنبال کنید.
قبل از اجرای PowerShell scripts باید ExecutionPolicy محلی خود را روی RemoteSigned تنظیم کنید (یعنی هر چیزی به جز Undefined و Restricted).
اگر AllSigned را انتخاب کنید، حتی local scripts (سایر اسکریپتهای خودتان) هم باید دیجیتالی امضا شده باشند تا اجرا شوند.
با RemoteSigned تنها اسکریپتهایی که ZoneIdentifier آنها روی Internet (دانلود از وب) تنظیم شده، نیاز به امضا دارند.
اگر شما administrator هستید و میخواهید این تنظیم برای همه کاربران اعمال شود، از -Scope LocalMachine استفاده کنید.
اگر کاربر عادی هستید، بدون دسترسی مدیریتی، میتوانید از -Scope CurrentUser برای اعمال تنها روی خودتان استفاده کنید.
اطلاعات بیشتر درباره PowerShell Scopes: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_scopes.
اطلاعات بیشتر درباره PowerShell ExecutionPolicy: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-executionpolicy.
برای تنظیم مقدار ExecutionPolicy روی RemoteSigned برای همه کاربران از فرمان زیر استفاده کنید:
> Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy RemoteSigned -Forceاگر حداقل PowerShell 5 یا PowerShell 4 همراه با PackageManagement را دارید، میتوانید از مدیر بسته برای نصب posh-git استفاده کنید.
اطلاعات بیشتر درباره PowerShell Gallery: https://learn.microsoft.com/en-us/powershell/scripting/gallery/overview.
> 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 عرضه میشوند با گواهی انتشار متفاوتی امضا شدهاند.
برای گنجاندن اطلاعات Git در پرامپت، باید ماژول posh-git وارد (import) شود. برای اینکه posh-git هر بار که PowerShell اجرا میشود وارد شود، فرمان Add-PoshGitToProfile را اجرا کنید که عبارت import را در اسکریپت $profile شما اضافه میکند. این اسکریپت هر بار که یک کنسول جدید PowerShell باز میکنید اجرا میشود. بهخاطر داشته باشید که چندین اسکریپت $profile وجود دارد؛ برای مثال یکی برای کنسول و یکی جدا برای ISE.
> Import-Module posh-git
> Add-PoshGitToProfile -AllHostsفایل انتشار posh-git را از https://github.com/dahlbyk/posh-git/releases دانلود و از حالت فشرده خارج کنید. سپس ماژول را با استفاده از مسیر کامل فایل posh-git.psd1 وارد کنید:
> Import-Module <path-to-uncompress-folder>\src\posh-git.psd1
> Add-PoshGitToProfile -AllHostsاین خط مناسب را به فایل 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 رجوع کنید.
