Brendan McKenzie

Git and Powershell

Wednesday, 12 September 2012

Git is an awesome piece of software, not just for developers working in large teams, but also for individual developers. I have projects where I can track the entire history of it via it's Git repository and most of the time I'm working alone. I have had issues working with other developers who haven't used it as much as I have, but we've always worked through it.

I started off using Git via SmartGit by Syntevo, which is free for non-commercial use. This was a great way to get used to the way Git worked. For a (very) brief period I tried TortoiseGit as I came from the SVN playground and thought it would be comparable to TortoiseSVN, alas, that was not the case.

After a while I started playing with git-bash and it wasn't too long before I (for the most part) ditched SmartGit, when it comes to tricky merge conflicts I prefer the GUI that SmartGit has but for everything else it's all command line.

Not too long after that I found Phil Haack's post on using Git in PowerShell, it works really well, gives great feedback to what you're doing and is a very useful module for PowerShell.

Then a little later I came across this post which is a great guideline on successful branching with Git. Before reading this I generally worked with two branches: master and development, which for the most part works just fine. But for keeping track of versions and making the repository history flow more nicely you need more than that.

It took a little adapting but after a while it just became second nature to use this model for branching, and I realised there were a few commands that I was repeating that could be simplified by using PowerShell aliases.

So I give to you, my [Git PowerShell aliases file]({{ "media/blog/2012-09-12-git-and-powershell/git-helper.ps1" | prepend: site.cdn_root }}). All it does is simplifies the git commands into shortcuts. If you want to see what's available, just load the .ps1 and type g<enter>.

Add it to your PowerShell profile by typing notepad $profile in PowerShell and adding the line . path\to\git-helper.ps1

Since I work in the office and at home and I wanted these shortcuts to be available to me wherever I am: I put the [file]({{ "media/blog/2012-09-12-git-and-powershell/git-helper.ps1" | prepend: site.cdn_root }}) into my SkyDrive, and load it in my PowerShell profile on both PC's.

Here it is in action...

Powershell with Git Extensions