There comes a time in any coder or non-coder's life when keeping track of file changes in your own head just gets out of hand. When that happens the logical next step is to move your files, whether it be code, configuration files, text files or other; to a version control system.

Git is a popular version (or revision) control system which is in wide use today and is built for speed and reliability. Although other protocols are available (for example, CVS or Subversion), Git is one of the more popular ones to use because of its speed, ease of use and availability on a variety of operating systems.

Git is a great system for many different kinds of items, from configuration files to code, on projects where one person to a whole development team are working on. The Linux kernel is one of the more famous projects which currently use git for version control.

While many power users prefer to use the flexible and powerful git command line, several Windows clients are available which make using a git easier for someone who is not used to the system.

Git For Windows

version control

Git for Windows is a Windows port of git with a lightweight interface. It includes the git binaries and a GUI to work with it. Git for Windows, or git-gui, is the most stable of the options even if it lacks some of the more advanced features that the ones below do have.

Make sure you write down the first file - "Git....windows" rather than msysgit, which is command line only and is used in some of the other projects below.

TortoiseGit

version control software

If you are familar with TortoiseSVN, TortoiseGit is a very similar program. Instead of working with an external GUI, TortoiseGit is a shell extension which integrates with your Explorer content menu within Windows. This has both its upside and downsides - you don't have an external program to deal with but you do need to use the TortoiseGit software to do your merges, check for comparisons (diff) and other features.

SmartGit

version control software

SmartGit bills itself as the 'easy to use' git client, and it delivers. SmartGit is probably my favorite of the group, due to its ease of use, built in tools and complete feature set.

One thing that I absolutely love about SmartGit is that it has integration with GitHub. If you use GitHub to manage your code, this integration makes it a breeze to work with your code. If you are new to git, SmartGit is a good program to start with.

SmartGit requires that you install msysgit as a prerequisite. It is commercial software but is free for personal use.

EGit for Eclipse

version control software

EGit is an Eclipse IDE (Integrated Development Environment) plugin. It works to manage your code in the git filesystem while you use Eclipse to actually write your code. Eclipse is a popular free development environment, which is why this is mentioned here.

Git Extensions

version control

Git Extensions is a Windows Shell Extension for Git, much like TortoiseGit. I have read good things about it, but honestly after I installed it I had some problems and errors that seemed not normal. I was able to fix it by removing the line "hideDotFiles = dotGitOnly" from my .git/configure directory. It also requires that you install 2 external programs, msysgit and Kdiff.

Git Extensions also includes a plugin for Microsoft Visual Studio 2005, 2008 and 2010.

To Each Their Own

The number of Windows git clients is growing constantly. What works for one person might not work for another, so it is important to try out several clients until you find one that works for you in your workflow. There are a number of projects which are working to build some Windows-native git clients such as Git# and also more cross-OS compatible ones like JGit.

Do you have a preferred Windows Git client that is not mentioned here? Let us know in the comments below.

Image credit: Shutterstock, Eclipse.org