Last Update: Sep 04, 2024 | Published: Mar 05, 2020
If you haven’t heard of Posh-GIT, it is a great module for assisting in managing your GIT repositories from within PowerShell. There is so much functionality in GIT that it can be hard, especially in a PowerShell oriented way, to use that functionality effectively. Using Posh-GIT, you are able to interact easily with GIT using the PowerShell shell. Of course, there are a few prerequisites. In this article, it is assumed that you have the GIT client itself installed. You can install the client from here.
The preferred way to install Posh-GIT is from the PowerShell Gallery. This method of installation relies on two things which are listed below.
PowerShellGet
version greater than or equal to 1.6
To install Posh-GIT, run the following command to install the module from the PowerShell Gallery.
Posh-GIT integrates GIT and PowerShell by modifying the PowerShell prompt to include GIT status information. Additionally, Posh-GIT provides helpful tab completion support for many common GIT commands, branch and remote names, and paths. Using simple commands, it is easy to tab-complete through the available commands which saves time remembering what the exact command may be.
After we have installed Posh-GIT, the next steps are to actually import the module. This is as simple as running: Import-Module posh-git
. Once the module has imported, provided you are in a GIT repository directory, the PowerShell prompt will change to reflect the current status.
There is a lot that can be displayed in that prompt, so let's break down what the properties are. This is the default configuration, which is configurable. [{HEAD-name} S +A ~B -C !D | +E ~F -G !H W]
The breakdown of the above prompt is available from the
, but highlighted below are a few of the more useful attributes.
HEAD
This displays the name of the branch and the color indicates the type of branch it is. This is very useful as you will be able to tell, at a glance, what the current status is.
ABCD
andEFGH
These two sets of indicators show both the index and the working directory file statuses. What is most useful here is the ability to know whether changes need to be committed and what has been modified, removed, or added.W
The overall status of the working directory, a quick way to know what you should do next in terms of GIT workflows.
Posh-GIT makes it trivially easy to customize your GIT prompt. By modifying the $GitPromptSettings
variable, you can customize the prompt to fit your exact needs. As you can see below, there are a large number of settings available.
Remember, to make these settings permanent make sure to put them in your PowerShell profile so that they are set upon startup! Though there are many ways to customize the prompt. A few of the more common ones are below. With all of the GIT and path information shown on a prompt, sometimes it can get quite long. If you pass in a new-line character, as seen in the below code, then you will have the input prompt shown below the PowerShell prompt.
Perhaps for readability, it is easier to see the branch and GIT information prior to the path. To do this simply setDefaultPromptWriteStatusFirst
to$True
.
Finally, what if we wanted the entire path to be shown and not abbreviate the path (even if quite long). Simply setDefaultPromptAbbreviateHomeDirectory
to$False
.
Of course, what is all this customization without modifying colors! There are a number of different settings we can use to change up the colors on our prompt. This might be most useful so that we can match the theme that PowerShell is being used in. To change the colors, it is as simple as modifying some of the following settings:
DefaultColor
BranchColor
IndexColor
WorkingColor
StashColor
ErrorColor
Each has aForegroundColor
andBackgroundColor
property. By changing these using the available[ConsoleColors]
, you can make the prompt look however you want.
To learn more about the available console colors, you can check out the
. What if you want to use a custom HTML color though? To make sure it works on both Windows and Linux, make sure to specify the color using a proper HEX code.
Windows can understand Orange
for example but PowerShell on Linux cannot, so it is best to use HEX codes for both.
$GitPromptScriptBlock
Further customization can be done using the $GitPromptScriptBlock
variable. You can read up on this customization in-depth
. The easiest way to start customizing your prompt is to modify the standardprompt
function in your profile. By including the$GitPromptScriptBlock
from within, you will be able to decorate around your prompt with whatever additional information helps you work!
When working with GIT repositories, it helps tremendously to have tools that support easy information gathering. Post-GIT provides a fantastic way to quickly visualize what your GIT status is and makes working with common GIT commands even easier, through tab completion and other enhancements. With an upcoming 1.0
release for Posh-GIT, the module becomes even more closely integrated into PowerShell across platforms.
Related Article: