The Nuget Package Manager console is a great way to do anything powershell straight from the Visual studio IDE. And that little window supports just about anything you can do with powershell. It can even use posh-git. Inspired by the post the Hanseldude did I went out and tried if I could get that to work. And it’s actually very easy.

I downloaded the posh-git files from github and saved them on my C drive under posh-git.

I then went to the Nuget Package Manager Console and did cd c:posh-git after which I did the powershell thing .install.ps1 and that added the following lines to my profile.


Load posh-git example profile

. ‘C:posh-gitprofile.example.ps1’``` You can see what it did with doing notepad $profile. It should even create a profile if you don’t already have one, but I did not test that for the Nuget Package Manager Console.

And after a restart of Visual studio it just works.

And even tab-completion now works for git.

The only thing to do now is to change the default colorscheme of posh-git to something that is better for a white background. But I hear from Keith Dalby that that should not be a problem and that he already has one.

You can also change the prompt to your liking.

And don’t forget you can also make the git experience a bit better when working with Visual studio by using my superfamous git shortcuts that I also have in my $profile file. I blogged about that before, even twice. Here is my latest version.

```powershell Function solutionworkingdirectory() { split-path -parent $dte.Solution.FileName | cd }

Function checkout($branch) { solutionworkingdirectory write-host “Closing solution” $filename = $dte.Solution.FileName $dte.Solution.Close() write-host “Adding files” git add . write-host “Commiting files” git commit -a -m “auto commit before checkout” write-host “Checking out” git checkout $branch write-host “Reopening solution” $dte.Solution.Open($filename) }

Function branch($branch) { if($branch) { solutionworkingdirectory write-host “Creating branch” git branch $branch } else { solutionworkingdirectory write-host “Showing branches” git branch } }

Function commit($message) { solutionworkingdirectory write-host “Adding files” git add . write-host “Commiting files” git commit -a -m “$message” }

Function push() { solutionworkingdirectory write-host “Pushing master to origin” git push origin master }``` So there it is. Git and powershell and Visual studio all in one little blogpost.

Edit: Changing the colors is actualy very easy. Just go to the posh-git folder and open GitPrompt.ps1 there you can easily change the colors. I use these for now.

```powershell BeforeText = ‘ [’ BeforeForegroundColor = [ConsoleColor]::Black BeforeBackgroundColor = $Host.UI.RawUI.BackgroundColor
DelimText = ‘ |’ DelimForegroundColor = [ConsoleColor]::Black DelimBackgroundColor = $Host.UI.RawUI.BackgroundColor

AfterText                 = ']'
AfterForegroundColor      = [ConsoleColor]::Black
AfterBackgroundColor      = $Host.UI.RawUI.BackgroundColor

BranchForegroundColor       = [ConsoleColor]::Blue
BranchBackgroundColor       = $Host.UI.RawUI.BackgroundColor
BranchAheadForegroundColor  = [ConsoleColor]::Green
BranchAheadBackgroundColor  = $Host.UI.RawUI.BackgroundColor
BranchBehindForegroundColor  = [ConsoleColor]::Red
BranchBehindBackgroundColor  = $Host.UI.RawUI.BackgroundColor

BeforeIndexText           = ""
BeforeIndexForegroundColor= [ConsoleColor]::DarkGreen
BeforeIndexBackgroundColor= $Host.UI.RawUI.BackgroundColor

IndexForegroundColor      = [ConsoleColor]::DarkGreen
IndexBackgroundColor      = $Host.UI.RawUI.BackgroundColor

WorkingForegroundColor    = [ConsoleColor]::DarkRed
WorkingBackgroundColor    = $Host.UI.RawUI.BackgroundColor

UntrackedText             = ' !'
UntrackedForegroundColor  = [ConsoleColor]::DarkRed
UntrackedBackgroundColor  = $Host.UI.RawUI.BackgroundColor

And this is what it looks like.